3.6.1 布尔(位)传送指令MOV

MOV指令用于将一个位变量的内容传送到另一个位变量。它既可以对位变量进行传送,也可以对位地址进行传送。
MOV指令的主要格式:
示例程序:
指令执行过程中会影响PSW中的进位标志位C(当目标操作数为C时)。

直接寻址时,如果位地址为P0、P1、P2、P3时,程序执行过程中需要注意:
  1. 读取操作:先读取整个端口(8位),再从中取出所需的位
  1. 写入操作:必须先读取整个端口,修改所需的位,再写回整个端口
这是因为这些位属于特殊功能寄存器(SFR)中的I/O端口,必须按字节操作。例如:
这种操作方式被称为"读-修改-写"(Read-Modify-Write)操作。在多任务系统或中断处理中需要特别注意,因为这种操作不是原子操作,可能会导致竞争条件。

3.6.2 布尔(位)状态控制指令

布尔(Boolean)状态控制指令主要包括CLR(Clear)、SETB(Set Bit)和CPL(Complement)三种指令。这些指令用于直接改变位变量的状态。

1. CLR(Clear)指令

CLR指令用于将位变量清零(置为0)。
指令格式:

2. SETB(Set Bit)指令

SETB指令用于将位变量置1。
指令格式:

3. CPL(Complement)指令

CPL指令用于将位变量的值取反(0变1,1变0)。
指令格式:
示例程序:
这些指令在执行过程中也需要注意"读-修改-写"的特性,特别是在操作I/O端口位时。同时,当操作对象为进位位C时,这些指令会直接影响PSW中的进位标志位。

3.6.3 布尔(位)逻辑操作指令

布尔(位)逻辑操作指令包括ANL和ORL两种指令。正如在3.4 逻辑运算类指令中介绍的那样,这两个指令可用于位变量的逻辑运算。

1. ANL(与)指令

ANL指令用于对位变量进行逻辑"与"运算。在位操作中,它主要用于将进位位C与某个位变量进行与运算。
指令格式:

2. ORL(或)指令

ORL指令用于对位变量进行逻辑"或"运算。在位操作中,它主要用于将进位位C与某个位变量进行或运算。
指令格式:
示例程序:
这些指令执行过程中会直接影响PSW中的进位标志位C。当操作I/O端口位时,同样需要注意"读-修改-写"的特性。

3.6.4 布尔(位条件转移指令)

布尔条件转移指令用于根据位变量的状态进行程序跳转。这类指令包括:JC(Jump if Carry)、JNC(Jump if Not Carry)、JB(Jump if Bit)、JNB(Jump if Not Bit)和JBC(Jump if Bit and Clear)。

1. JC (Jump if Carry)和JNC (Jump if Not Carry)指令

这两个指令根据进位位C的状态进行条件跳转:
指令格式:
示例程序:

2. JB (Jump if Bit)和JNB (Jump if Not Bit)指令

这两个指令根据指定位变量的状态进行条件跳转:
指令格式:
示例程序:

3. JBC (Jump if Bit and Clear)指令

JBC(Jump if Bit and Clear)指令首先测试指定位,如果该位为1,则将其清零并跳转;如果该位为0,则继续执行下一条指令。
指令格式:
示例程序:
这些指令在执行过程中,当操作I/O端口位时也需要注意"读-修改-写"的特性。rel表示相对地址偏移量,跳转范围为当前程序计数器±127字节。
Loading...
Z_cosy
Z_cosy
浙江大学电气工程学院本科生
最新发布
Dairy
2025-4-21
MATH
2025-3-23
English
2025-3-21
Courses
2025-3-21
公告
🎉Welcome to Z-cosy🎉
-- 食用指南 ---
目前只有课程笔记以及电控学习笔记
陆续会整理更多内容!