单片微机原理与接口技术——8051汇编指令系统与编程基础(1)寻址方式

寻址方式


指令格式
[名字:]操作码 操作数1, 操作数2,…;注释

名字——标号或变量名(标号是指指令所在地址的标志符号)
操作码——操作的性质
操作数——操作的对象(可能是数据,也可能是数据的地址或符号。)
注释——解释指令或程序的含义

操作数形式:

A
Rn n=0~7
Ri i=0/1
direct
#data
DPTR
@DPTR
@A+DPTR
@A+PC
标号

指令分类
所占字节分

(1)单字节指令:操作码和操作数同在一个字节中。
(2)双字节指令:一个字节为操作码,另一个字节是操作数。
(3)三字节指令:操作码占一个字节,操作数占二个字节。

执行时间来分

(1)1个机器周期(12个时钟振荡周期)的指令;
(2)2个机器周期指令;
(3)4个机器周期——乘、除指令。

指令系统的寻址方式——说明操作数所在地址的方法

1.立即数寻址方式

直接在指令中给出操作数——也称立即数
需在操作数前加标志“#”。
例如: MOV A,#40H; 40H →A
立即数40H位于指令码中,存放在程序存储器内。
立即数只能作源操作数,不能作目的操作数
以A~F打头的16进制数字出现在指令中时,前面一定要加一个数字0

2.寄存器寻址

指令中的操作数为某一寄存器的内容。
有:R0 ~R7,A(不能是ACC),B,C,DPTR
例如:MOV A,R1 ;(R1)→A

3.直接寻址方式

指令中直接给出操作数的单元地址,操作数的单元地址用“direct”表示。
MOV A,direct
例如: MOV A,40H ;(40H)→A
表示把内部RAM 单元(direct)的内容传送到A。
指令中两个操作数都可由直接寻址方式给出。
MOV direct1,direct2
例如:MOV 42H,62H;(62H) → 42H
直接寻址是访问片内特殊功能寄存器的唯一寻址方式

4.寄存器间接寻址方式

寄存器中存的是操作数地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。
在寄存器名称前加“@”,与寄存器寻址区别。
有:@DPTR ,@R0 ,@R1
例如:MOV A,@R0
若(R0)=40H,则 (40H) →A。

5.基址加变址寄存器间址寻址方式

DPTRPC作为基址寄存器,以累加器A作为变址寄存器,两者内容相加结果为操作数的16位地址。
MOVC A,@A+PC
MOVC A,@A+DPTR

若(A)=05H,(DPTR)=0400H,(0405H) → A。
可将固定的的表格存放在程序存储器中,DPTR为表头,A为表中偏移量,读取对应的表格参数。
JMP A,@A+DPTR
可根据A中不同内容,实现跳向不同程序入口的跳转。

6.相对寻址方式

以PC值加上相对偏移量rel,形成转移目的地址,使程序跳转。
(PC)=转移指令所在的地址+转移指令字节数
转移目的地址=转移指令所在的地址+转移指令字节数+rel

偏移量rel是带符号8位二进制补码数,–128~+127。
例如: SJMP rel;(PC)+rel → PC
SJMP LOOP ;
目的地址标号LOOP→ PC,由汇编程序自动计算偏移量。

7.位寻址方式

对可寻址位置1、清0、求反、传送、判跳和逻辑运算等操作。
一般为直接位地址“bit”或位名。
MOV C,bit
例如:MOV C,40H;(40H) → CY
SETB IT0
位处理功能增强了实时性。

7种寻址方式及其寻址空间

发布了10 篇原创文章 · 获赞 6 · 访问量 350

猜你喜欢

转载自blog.csdn.net/weixin_45367147/article/details/105495447