Chapter2:指令系统:《单片机笔记》

Chapter 2:指令系统

2.0 基础

  • 强烈建议:观看时请配合PPT食用(理解PPT上的例题)

2.0.1 Outline

在这里插入图片描述

2.0.2 指令格式和常用符号

  • 指令格式
    在这里插入图片描述
  • 指令中的常用符号
符号含义
Rn: n=(0~7)表示当前工作寄存器R0~R7中的一个
Ri: i=(0、1)代表R0和R1寄存器中的一个,用作间接寻址寄存器。
dir8 位直接地址(片内 RAM 和 SFR )
#data8位立即数,即8位常数。可以为2进制(B)、10进制、16进制(H)、字符(‘ ’)
#data16表示16位立即数,取值范围为:#0000H ~ #0FFFFH
addr16表示16位地址
addr11表示11位地址
rel相对偏移量(为1字节补码)用于相对转移指令中
bit位地址,在位地址空间中
$表示当前指令的地址
( )用于注释中表示存储单元的内容

2.1 寻址方式

  • 指令中提供(寻找)操作数的方式称为寻址方式。

2.1.1 立即寻址

  • 指令中直接给出操作数的寻址方式称为立即寻址。

  • 在 51 单片机中,立即数前面加 “#“号表示。

  • 如8位数(#30H )或 16 位数(#2000H) 。
    例如:
    MOV A, #30H ; A←30H ,执行后 A=30H
    MOV DPTR,#2000H ; DPTR ← 2000H,

2.1.2 直接寻址

  • 操作数的地址直接出现在指令中。
  • 寻址对象:
    ①内部数据存贮器:使用它的地址。
    ②特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。
  • 例子:
    在这里插入图片描述

2.1.3 寄存器直接寻址

  • 操作数存放在寄存器中。

  • 寻址对象**:A,B,DPTR,R0~R7** 。

  • 例如: MOV A,R0 ;R0→A,A、R0均为寄存器寻址。

    MUL AB ;A*B→BA,A、B均为寄存器寻址。

2.1.4 寄存器间接寻址

  • 操作数存放在以寄存器内容为地址的单元中。
    在寄存器前加前缀标志 “@”。

  • 例子:
    在这里插入图片描述

2.1.5 变址寻址

在这里插入图片描述

2.1.6 相对寻址

在这里插入图片描述

2.1.7 位寻址

  • 寻址对象:
    (1)片内RAM中20H~2FH中的128个位
    (2)SFR中的可位寻址的位。

  • 例子:
    在这里插入图片描述

2.2 数据传送与交换指令

  • 计算机中的传送指令,实际是将源操作数的内容拷贝到目的操作数

    因此,源操作数的内容不变,而目的操作数原来的内容会被新拷贝的内容代替。

  • 数据传送交换指令类指令包括:数据传送、数据交换、堆栈操作等指令。

2.2.1 传送类指令

  1. 内部RAM、SFR之间的传送:MOV指令
    在这里插入图片描述
  • 总结:一共5类,从作为目的操作数的角度来理解区别的话: A除了自己不能给自己,其他都行(4个)。 dir全部都行(5个)。Rn和Ri之间不能互传,也不能给自己,其他都行(3个)。

  • 判断指令正误时,不能只简单地套上面的传送逻辑,还要注意操作数本身的逻辑。

    比如#data表示8位立即数——用A,#data16表示16位立即数——用DPTR。

    没有@R3这个用法,只有@R0、@R1、@DPTR。

    *例题见ppt

  1. 外部存储器和A累加器之间的传送:MOVX指令、MOVC指令

    • 总图:

      • 这两条指令只能用 间接寻址 or 变址寻址,不能用 直接寻址。
      • 注意MOVX是双向的,MOV是单向的。
        在这里插入图片描述
    • MOVX指令
      在这里插入图片描述
      @R0既可以用来表示内部RAM也可以表示外部RAM,取决于你的指令是MOV还是MOVX

    • MOVC指令
      在这里插入图片描述
      *例子见ppt

  2. 堆栈操作指令
    在这里插入图片描述

2.2.2 交换指令

  • 实现片内RAM区的数据双向传送。
  1. 字节交换指令 (XCH指令中一个操作数必须是A)
    在这里插入图片描述
  2. 低半字节交换指令
    在这里插入图片描述
  3. A的高、低半字节交换指令
    在这里插入图片描述

2.3 算术运算和逻辑运算指令

  • 算术运算是加、减、乘、除运算。
    逻辑运算是按位进行的与、或、非、异或等运算。

2.3.1 以A为目的操作数的算术、逻辑运算指令(24条)

在这里插入图片描述

  • 加减运算指令影响标志位CY、 OV、AC 。
    逻辑运算是按位进行的,因此不影响CY、OV、AC。
  • 凡是指令执行结果在A累加器中,运行结果“1”的奇、偶性反映在P标志位(包括前面的传送指令和后面的移位指令)。
  • 例子见ppt

2.3.2 以dir为目的操作数逻辑运算指令(6条)

在这里插入图片描述

2.3.3 加1、减1 指令(9条)

在这里插入图片描述

2.3.4 十进制调整指令

在这里插入图片描述
*例子见ppt

2.3.5 专对A的指令

  1. 取反和清0
    在这里插入图片描述
  2. 移位指令 (是否带进位的 循环 左/右 移)
    在这里插入图片描述

2.3.6 乘除法指令

在这里插入图片描述

2.4 控制转移指令

在这里插入图片描述

2.4.1 子程序调用

  1. 长调用
    在这里插入图片描述

  2. 短调用
    在这里插入图片描述

  3. 子程序返回指令
    在这里插入图片描述

2.4.2 转移指令

  1. 无条件转移指令

    1. 短转移: AJMP addr11 ;addr11→PC0~PC10
    2. 长转移: LJMP addr16 ;addr16→PC0~PC15
    3. 间接转移:JMP @A+DPTR ;A+DPTR→PC
    4. 无条件相对转移:SJMP rel ;PC+rel→PC
  2. 条件转移指令

    1. 累加器为零(非零)转移:JZ relJNZ rel

    2. 减 1 不等于零转移:DJNZ Rn , relDJNZ dir , rel

    3. 比较转移指令:见下图:
      在这里插入图片描述

2.4.3 空操作指令

在这里插入图片描述

2.5 位操作指令

2.5.1 功能、表达方式、限制

在这里插入图片描述

2.5.2 具体指令(7种17条,6×2+1×5)

在这里插入图片描述

2.6 小结

  • 51系列单片机指令系统的特点是不同的存储空间寻址方式不同,适用的指令不同,必须进行区分。
  • 指令是程序设计的基础,应重点掌握 传送指令、算术和逻辑运算指令、控制转移指令和位操作指令,掌握 指令的功能、操作的对象和结果,对标志位的影响等内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值