单片机中80C51的寻址方式

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/18 17:34:56

单片机中80C51的寻址方式
单片机中80C51的寻址方式

单片机中80C51的寻址方式
1.立即寻址方式
采用立即寻址的指令一般是双字节的.第一个字节是指令的操作码,第二个字节是立即数.因此,操作数就是放在程序存储器中的常数.立即数前面应加前缀“#”号.
例如: MOV A, #2BH ;A←#2BH,即将立即数2BH传送至A中.
2.直接寻址方式
采用直接寻址的指令一般是双字节或三字节指令,第一字节为操作码,第二,三字节为操作数的地址码.单片机中,直接地址只能用来表示片内低128字节单元、专用寄存器和片内RAM的位地址空间.其中专用寄存器和位地址空间只能用直接寻址方式来访问.
例如:MOV A,30H ;(30H)→A
MOV C,00H ; (00H)→Cy
LJMP 1000H ; 将1000H送入PC
3.寄存器寻址方式
寄存器寻址方式用于访问选定的工作寄存器R0~R7、A、B、DPTR和进位CY中的数.其中R0~R7由操作码低三位的8种组合表示,A、B、DPTR、C则隐含在操作码之中.
这种寻址方式中被寻址的寄存器中的内容就是操作数.
例如: MOV A, R0 ;(R0)→A
MOV B ,A ;(A)→B
4.寄存器间接寻址方式
这种寻址方式中,指令指定寄存器中的内容为操作数的地址.寄存器间接寻址是用于访问片内数据存储器或片外数据存储器.当访问片内RAM 或片外的低256字节空间时,可用R0或R1做为间址寄存器;当访问片外整个64KB的地址RAM空间时,用16位寄存器DPTR做间址寄存器.这类指令都为单字节的指令,操作码的最低位表示是采用R0还是R1做间址器.
在执行PUSH和POP指令时,也采用寄存器间接寻址,此时用堆栈指针SP做间址寄存器.
例如:MOVX A, @R0 ; ((R0))→A
MOVX A , @DPTR ; ((DPTR))→A
POP ACC ; ((SP))→A , (SP)-1→SP
5.基址加变址寻址方式
这种寻址方式用于访问程序存储器中的某个字节.以DPTR或PC作为基址寄存器,累加器A做为变址寄存器,两者的内容之和为操作数的地址.这种寻址方式常用于查表操作.
例如:MOVC A,@A+DPTR ;指令代码为93H,单字节指令.设该指令放在1040H单元,A的原内容为A0H,DPTR中的值为 3000H,则操作数的地址等于:A0H+3000H=30A0H,即将30A0H单元中的内容传送至A中.
6.位寻址方式
位寻址是指对片内RAM的位寻址区(字节地址20H~2FH)和可以位寻址的专用寄存器进行位操作时的寻址方式.在进行位操作时,借助于进位C作为位操作累加器.操作数直接给出该位的地址,然后根据操作码的功能对其进行位操作.位寻址的位地址与直接寻址的字节地址形式完全一样,主要由对应的操作数的位数来区分,使用时应加以注意.
例如:MOV 10H,C ;10H是位寻址的位地址(C是位累加器)
MOV A,10H ;10H是直接寻址的字节地址(A是字节累加器)