MCS-51指令系统概述
是通过寄存器指向的地址单元得到的,这便是寄存器间接寻址名称的由来。
例如指令:
MOV A,@R0
这条指令的意义是R0寄存器指向地址单元中的内容送到累加器A中。假如R0=#56H,那么是将56H单元中的数据送到累加器A中。
寄存器间接寻址方式可用于访问内部RAM或外部数据存储器。访问内部RAM或外部数据存储器的低256字节时,可通过R0和R1作为间接寄存器。然而有必要指出,内部RAM的高128字节地址与专用积存器的地址是重叠的,所以这种寻址方式不能用于访问特殊功能寄存器。
外部数据存储器的空间为64kB,这时可采用DPTR作为间址寄存器进行访问,指令如下:
MOVX A,@DPTR
这条指令的意义是与上述类似,不再赘述。
[4].立即寻址
立即寻址就是把操作数直接在指令中给出,即操作数包含在指令中,指令操作码的后面紧跟着操作数,一般把指令中的操作数称为立即数,因此而得名。为了与直接寻址方式相区别,在立即数前加上“#”符号,例如:
MOVX A,#0EH
这条指令的意义是将0EH这个操作数送到累加器A中。
[5].变址寻址
变址寻址是以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,将两寄存器的内容相加形成16位地址形成操作数的实际地址。例如:
MOV A,@A+DPTR
MOVX A,@A+PC
JMP @A+DPTR
在这三条指令中,A作为偏移量寄存器,DPTR或PC作为变址寄存器,A作为无符号数与DPTR或PC的内容相加,得到访问的实际地址。其中前两条是程序存储器读指令,后一条是无条件转移指令。
[6].位寻址
在MCS-51单片机中,RAM中的20H—2FH字节单元对应的位地址为00H—7FH,特殊功能寄存器中的某些位也可进行为寻址,这些单元既可以采用字节方式访问它们,也可采用位寻址的方式访问它们。
[7].相对寻址
相对寻址方式是为了程序的相对转移而设计的,其夜里是以PC的内容为基址,加上给出的偏移量作为转移地址,从而实现程序的转移。转移的目的地址可参见如下表达式:
目的地址=转移指令地址+转移指令字接数+偏移量
值得注意的是,偏移量是有正负号之分的,偏移量的取值范围是当前PC值的-128—+127之间。
- MCS-51系列单片机结构化程序设计探讨(04-20)
- 基于MCS-51的嵌入式Internet接入技术(09-02)
- MCS-51单片机的定时器/计数器应该掌握的知识(10-19)
- MCS-51系列单片机的结构(12-02)
- MCS-51单片机汇编指令详解(12-01)
- MCS-51单片机的存储器结构---单片机基础(11-29)