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

指令格式

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

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

指令分类

按所占字节分:

  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)的内容传送到指令中,两个操作数都可由直接寻址方式给出。
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
  • 标号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值