单片机学习小组
直播中

王银喜

7年用户 2374经验值
私信 关注

指令系统的寻址方式有哪几种?

指令系统的寻址方式有哪几种?
指令系统有哪些分类?格式是什么?

回帖(1)

马念

2022-1-18 11:16:22
指令格式

[名字:] 操作码 操作数1,操作数2,··;注释

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

按所占字节分:



  • 单字节指令:操作码和操作数同在一个字节中
  • 双字节指令:一个字节为操作码,另一个字节是操作数
  • 三字节指令:操作码占一个字节,操作数占两个字节

按执行时间来分:



  • 1个机器周期(12个时钟振荡周期)的指令;
  • 2个机器周期指令;
  • 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)的内容传送到指令中,两个操作数都可由直接寻址方式给出。
MOV direct1, direct2
例如: MOV 42H , 62H ;(62H)→42H
直接寻址是访问片内特殊功能寄存器的唯一寻址方式。
4.寄存器间接寻址方式

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

以DPTR或PC作为基址寄存器,以累加器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
位处理功能增强了实时性。

操作数形式




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

更多回帖

发帖
×
20
完善资料,
赚取积分