前面介绍了四种基本的布尔代数操作:AND、OR、XOR 和 NOT。用汇编语言指令,这些操作可以在二进制位上实现。同样,这些操作在布尔表达式层次上也很重要,比如 IF 语句。
首先了解按位指令,这里使用的技术也可以用于操作硬件设备控制位,实现通信协议以及加密数据,这里只列举了几种应用。Intel 指令集包含了 AND、OR、XOR 和 NOT 指令,它们能直接在二进制位上实现布尔操作,如下表所示。此外,TEST 指令是一种非破坏性的 AND 操作。
操作 | 说明 |
---|---|
AND | 源操作数和目的操作数进行逻辑与操作 |
OR | 源操作数和目的操作数进行逻辑或操作 |
XOR | 源操作数和目的操作数进行逻辑异或操作 |
NOT | 对目标操作数进行逻辑非操作 |
TEST | 源操作数和目的操作数进行逻辑与操作,并适当地设置 CPU 标志位 |
布尔指令影响零标志位、进位标志位、符号标志位、溢出标志位和奇偶标志位。下面简单回顾一下这些标志位的含义:
- 操作结果等于 0 时,零标志位置 1。
- 操作使得目标操作数的最高位有进位时,进位标志位置 1。
- 符号标志位是目标操作数高位的副本,如果标志位置 1,表示是负数;标志位清 0,表示是正数。(假设 0 为正。)
- 指令产生的结果超出了有符号目的操作数范围时,溢岀标志位置 1。
- 指令使得目标操作数低字节中有偶数个 1 时,奇偶标志位置 1。
接下来分别为大家讲解 AND、OR、XOR 和 NOT 的实际应用。
- 《AND指令》
- 《OR指令》
- 《XOR指令》
- 《NOT指令》
- 6.1 布尔和比较指令简介
6.2 AND指令
6.3 OR指令
6.4 位向量(位映射)
6.5 XOR指令
6.6 NOT(反码)指令
6.7 TEST指令
6.8 CMP(比较)指令
6.9 置位和清除单个CPU标志位
6.10 64位模式下的布尔指令
6.11 条件跳转简介
6.12 条件跳转指令汇总
6.13 条件跳转应用及示例
6.14 LOOPZ和LOOPE指令
6.15 LOOPNZ和LOOPNE指令
6.16 使用汇编语言实现IF语句
6.17 使用汇编语言实现逻辑表达式
6.18 使用汇编语言实现WHILE循环
6.19 表驱动选择
6.20 有限状态机
6.21 条件控制流伪指令
6.22 .IF、.ELSE、.ELSEIF、.ENDIF伪指令
6.23 用.REPEAT和.WHILE实现循环