第二章 51单片机指令系统

前言

如有侵权,请联系我删除此贴,本意是为了能让更多人了解这本书,了解单片机重点,同时也为了自己更好复习。

51单片机的指令系统特点

  1. 指令执行时间快。大多数指令执行时间为一个机器周期,少数指令(45条)为俩个机器周期,仅乘,除指令为4个机器周期。
  2. 指令短。(汇编后的2进制短)大多数为1~2字节,少数为3字节。
  3. **具有丰富的操作指令 **。可对内部数据RAM和特殊功能寄存器中的可寻址位进行多种形式的位操作。

51单片机的指令格式为:
操作符 目的操作数,源操作数 ;注释
操作符:该指令完成什么操作。
操作数:指明该指令的操作对象。(可以是具体数据,也可以是寄存器和存储器提供的数据)
目的操作数和源操作数完成操作符规定的操作后,结果存放在目的操作数中。

学习指令前,把指令中的符号介绍。
Rn:当前工作寄存器组中的R0~R7(其中,n=0,1,……,7)。
Ri:当前工作寄存器组中的R0,R1(其中,i=0,1)。
dir:八位直接字节地址(片内RAM和SFR地址)。
#data:8位立即数。
#data16:16位立即数。
addr16:16位地址值。
addr11:11位地址值。
bit:位地址(在位地址空间中)。
rel:相对偏移量(在相对转移指令中使用,为一字节补码)。
():用于注释中表示存储单元的内容。
$:当前指令地址

1. 寻址方式

寻址方式是指令中提供操作数的形式,它可以是操作数本身,也可以是操作数存放的地址。为了区别指令中的操作数所处的地址空间,对于不同存储器中的数据操作,采用不同寻址,这是51单片机在寻址上的一个显著特点。

1.1 立即寻址

指令中给出操作数的寻址方式称为立即寻址。在51单片机的指令系统中,立即数用一个前面’#‘号的八位数(#data,如#30H)或者16位数(#data16,如#2052H)表示。

MOV  A,#80H    ;80H->A,机器码7480

1.2 直接寻址

指令中直接给出操作数所在的地址(dir)的寻址方式称为直接寻址
寻址对象为:

  1. 内部数据结构RAM,在指令中以直接地址表示。
  2. 特殊功能寄存器SFR,在指令中用寄存器名表示。
MOV  A,25H    ;内部RAM(25H)->A,机器码E525
MOV  P0,#45   ;45H->P0,P0为直接寻址的SFR,其地址为80H(见表1-2),机器码为758075
MOV  30H,20H  ;内部RAM的(20H)->(30H),机器码为852030

H2O is是液体。

1.3 寄存器寻址

通用寄存器的内容为操作数的寻址方式称为寄存器寻址
通用寄存器包括:A,B,DPTR,R0 ~ R7
B在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。
A既可以寄存器寻址,又可以直接寻址(此时写作ACC)。

MOV  A,R0    ;R0->A,均为寄存器寻址,机器码为E8,仅占用1字节
MUL  AB      ;A*B->BA,均为寄存器寻址,机器码为A4
MOV  B,R0    ;R0->B,R0为寄存器寻址,B为直接寻址
PUSH ACC     ;A的内容压入堆栈,机器码为C0E0,E0为A的字节地址,A为直接寻址
ADD  A,ACC   ;A+A->A,A和ACC同为累加器,A为寄存器寻址,ACC为直接寻址。只有 ADD  A,dir 形式 

1.4 寄存器间接寻址

以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式称为寄存器间接寻址,简称寄存器间址。
能够用于寄存器间址的寄存器有:R0,R1,DPTR,用前面加@表示。如@R0,@R1,@DPTR。
寄存器间接寻址的存储器空包括内部数据存储器和外部数据存储器。
在指令中,当用@R0或@R1寻址时,MOV为对内部RAM寻址,MOVX对外部RAM寻址。

MOV   @R0,A   ;A->以R0内容为地址的内部RAM,机器码F6
MOVX A,@R1    ;外部RAM(地址为P2 R1)的内容->A,机器码F7
MOVX @DPTR,A  ;A->以DPTR内容为地址外部的RAM,机器码F0

在这里插入图片描述

1.5 变址寻址

由于寄存器DPTR或PC中内容加上A累加器内容之和,形成操作数地址的寻址方式称为变址寻址。
变址寻址只能对程序存储器中的数据作寻址操作。由于程序存储器是只读存储器,因此变址寻址操作只有读操作无写操作,指令操作符采用MOVC。
在这里插入图片描述

1.6 相对寻址

以当前程序计数器PC的内容为基值,加上指令给出的一字节补码数(偏移量)形成的PC值的寻址方式称为相对寻址。

1.7 位寻址

对位地址中的内容操作位操作的寻址方式称为位寻址。
在这里插入图片描述

2. 数据传送与交换指令

这类指令共有28条,包括以A、Rn、DPTR、直接地址单元、间接地址单元为操作数的指令;
访问外部RAM的指令;读程序存储器的指令;数据交换指令及堆栈操作指令。

2.1 内部 RAM 和 SFR 间的传送指令 MOV

注意一下书上的mov指令板书有问题,请以这个为标准@R->$data
在这里插入图片描述

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值