51单片机的指令系统,在官方手册上有详细介绍,因为我也是第一次学习,所以如果在文章中出现错误,希望大家及时指出,俗话说得好,给别人纠错的过程就是自己进步的过程。
1.寻址方式
寻址方式是每一种计算机的指令集中不可缺少的部分,寻址方式规定了数据的来源和目的地,对于不同的程序指令,来源和目的地的规定也会不同,在STC单片机中,寻址方式可分为下面几种:
- 立即寻址
- 直接寻址
- 间接寻址
- 寄存器寻址
- 相对寻址
- 变址寻址
- 位寻址
立即寻址:也称为立即数寻址,在指令操作数中直接给出参加运算的操作数。如---MOV A, #70H 这条指令的功能是将立即数70H传送到累加器A中
直接寻址:指令操作数域给出的参加运算操作数的地址, 直接寻址方式只能用来表示特殊功能寄存器、内部数据寄存器和位地址空间,其中特殊功能寄存器和位地址空间只能使用直接寻址方式访问。如---ANL 70H, #48H 表示70H单片中的数与立即数48H相“与”,结果放在70H单元中,其中70H是直接地址,表示内部数据存储器RAM中的一个单元。
间接寻址:采用R0或R1前添加“@”符号表示,例如,假设R1中的数据是40H,内部数据存储器40H单元所包含的数据是55H,那么如:MOV A @R1 把数据55H传给累加器。
寄存器寻址:是对选定的工作寄存器R7--R0、累加器A、通用寄存器B、地址寄存器和进位C中的数进行操作。因此,寄存器寻址包含一种隐含的寻址方式,寄存器工作区的选择由程序状态寄存器PSW中的RS1、RS0来决定,指令操作数制定的寄存器均指当前工作区中的寄存器。如---INC R0 ; (R0+1-->R0)
相对寻址:是将程序计数器PC中的当前值与指令第二字节给出的数相加,其结果作为转移指令的转移地址。转移地址也称为转移目的地址,PC中的当前值称为基地址,指令第二字节给出的数称为偏移量,由于目的地址是相对与PC中的基地址而言,所以这种寻址方式称为相对寻址。偏移量是带符号的数,所能表示的范围是+127--128,这种寻址方式主要用于转移指令。如JC 80H ; C=1 跳转 表示若进位位C为0,则程序计数器PC内容不变,即不转移,若进位位C为1,则以PC中的当前值为基地址,加上偏移量80H后所得到的结果作为该转移指令的目的地址。相对寻址:是将程序计数器PC中的当前值与指令第二字节给出的数相加,其结果作为转移指令的转移地址。转移地址也称为转移目的地址,PC中的当前值称为基地址,指令第二字节给出的数称为偏移量,由于目的地址是相对与PC中的基地址而言,所以这种寻址方式称为相对寻址。偏移量是带符号的数,所能表示的范围是+127--128,这种寻址方式主要用于转移指令。
变址寻址:指令操作数制定一个存放变址基址的变址寄存器。变址寻址时,偏移量与变址基值相加,其结果作为操作数的地址。变址寄存器有程序计数器PC和地址寄存器DPTR。如---MOVC A, @A+DPTR 表示累加器A为偏移量寄存器,其内容与地址寄存器DPTR的内容想家,其结果作为操作数的地址,取出带单元的数送入累加器A中。
位寻址: 指对一些内部数据存储器RAM和特殊功能寄存器进行位操作时的寻址。在进行位操作时,借助于进位位C作为位操作累加器,指令操作数直接给出该位的地址,然后根据操作码的性质对该位进行位操作。位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码加以区分。如---MOV C, 20H; 片内位单元位操作型指令
以上就是51单片机涉及的7中寄存器寻址方式。指令集比较枯燥,所以耐下性子,方得始终。
閱讀更多 科技宅的原味 的文章