1. 指令系统的定义

  • 指令是规定计算机完成一个特定功能的命令
  • 程序是一系列指令
  • MCS-51单片机设有传送、算术运算、逻辑运算、控制转移、位操作共5类111条指令
  • 用户可以通过立即寻址、寄存器寻址、寄存器间接寻址、直接寻址、变址寻址、相对寻址、位寻址等7种寻址方式规定操作数

2. 单片机指令

2.1 单片机指令格式

标号:操作码助记符 目标操作数 ,源操作数 ;注释

例子:
MAIN:MOVE A ,#10H ;将10H放进去累加器

2.2 单片机常用的符号

符号功能
A(ACC)累加器
B专用寄存器,用于乘法和除法指令
C进位标志或进位位,或布尔处理机中的累加器
DPTR数据指针,可用作十六位地址寄存器
Rn(0~7)当前寄存器组的八个工作寄存器R0~R7,由PSW中的RS1和RS0决定当前使用
Ri(0,1)可用于间接寻址的两个寄存器
#立即数前缀符号
@间接寻址中工作寄存器的前缀符号
(X)X单元中的内容
$表示当前指令的地址
/对该位操作数取反,但不影响该位的原值

3. 寻址方式

3.0 先上总结:

3.0.1 各种寻址方式

寻址方式利用的变量寻址空间补充说明
立即寻址#data程序寄存器直接取指令后面的操作数
直接寻址direct片内RAM低128B和SFR直接取出该地址里面的东西
寄存器寻址R0~R7,A,B,DPTR工作寄存器和部分SFR直接取寄存器里面的东西
寄存器间接寻址@R0,@R1,@DPTR片内RAM、片外RAM取寄存器所存地址里面的东西
变址寻址@A+PC,@A+DPTR程序存储器取两个寄存器内容相加后的地址里面的东西
相对寻址@PC+偏移量程序存储器取PC偏移之后的地址对应的内容
位寻址bit片内位寻址和部分SFR取一个位上的内容

3.0.2 存储空间以及对应的寻址方式

单片机的存储空间

存储空间寻址方式
内部00H-1FH工作寄存器寄存器,直接,间接
内部20H-2FH位空间位,直接,间接
内部30H-7FH用户RAM间接
内部80H-FFH用户RAM间接
内部80H-FFH特许功能寄存器SFT直接,为(部分)
外部RAM间接
外部ROM程序存储器变址,相对

3.1 立即寻址

  1. 定义:操作数紧跟在操作码后面,包括在指令字节中,和操作码一起存在程序存储器
  2. 例子:
    MOV A, #52H ;52H -> A
    在这里插入图片描述

3.2直接寻址

  1. 定义:指令中直接给出存储器的地址,操作数在存储器中
  2. 例子:MOV A ,52H ;(52h)->A
    在这里插入图片描述

3.3 寄存器寻址

  1. 定义:指定寄存器的名字,寄存器的内容为操作数
  2. 例子:
    MOV A, R0 ; ((R0))->A
  3. 适用范围:
    i. 4组R0-R7共32个,每次只能使用当前寄存器组的8个
    ii. 部分特殊功能的寄存器A,B,DPTR等

3.4寄存器间接寻址

规定:

  1. 片内基本RAM的低128位、高128位,间接用@R0、@R1
  2. 片外RAM(64kb):用@DPTR
  3. 片外拓展RAM:若小于256B,间接用DPTR或@R0,@R1,若大于256B,则用@DPTR

例子:
MOV DPTR ,#3456H ;3456H->DPTR
MOVX A,@DPTR ; ((DPTR))->A

3.5 变址寻址

  1. 定义:基地址(DPTR和PC预先存放操作数对应的基地址)+偏移量(累加器A预先存放对应的偏移量),作为操作数的有效地址
  2. 例子:
    MOV A, #22H ;偏移量
    MOV DPTR,#63A0H ;基地址
    MOV A,@A+DPTR ; ((A)+(DPTR))->A
    在这里插入图片描述

3.6 相对寻址

  1. 定义:相对寻址以程序计数器PC的当前值作为基地址,与指令中给出的相对偏移量rel进行相加,把所得之和作为程序的转移地址。

    目标地址 = 当前PC值 + rel = 指令存储地址 + 指令字节数 + rel

    注意事项
    i. 当前PC值是指相对转移指令的存储地址加上该指令的字节数,即相对转移指令取指结束时的值。
    ii. 偏移量rel是有符号的单字节数,以补码表示,其取值范围是-128~ +127(00H~FFH)。负数表示从当前地址向地址小的方向转移,正数表示从当前地址向地址大的方向转移。

  2. 例子:
    SJMP 08H ;PC+2+08H->PC
    在这里插入图片描述
    ps:
    a. 为什么+2,因为SJMP(占用一个字节),再取完08H是(也是一个字节)
    b. 最后拿到的200AH放进PC

3.7 位寻址

  1. 补充:
    位(bit,一位二进制码),字节(byte,8位二进制码) ,字(word,一般情况下两个字节一个字,16位)
  2. 位寻址可以理解成去除某个位的值,具体形式有以下四种
形式例子描述
直接使用位地址MOV C,0D5H将PSW的位5(位地址D5H)的状态送进位标志位。
单元地址加上位序号MOV C, 0D0H.5将PSW(单元地址0D0H)的位5(位地址D5H)的状态送进位标志位。
特殊功能寄存器加上序号MOV C, PSW.5;将PSW的位5的状态送进位标志位。
位名称表示形式MOV C, F0;将PSW的位5(位地址D5H、位名称为F0)的状态送进位标志位。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐