逻辑运算和移位指令
- 逻辑运算指令
- “与”指令
- 格式
- 操作
- “与”指令的应用
- “或”运算指令
- 格式
- 操作
- “或”指令的应用
- “非”运算指令
- 格式
- 操作
- “异或”运算指令
- 格式
- 操作
- “测试”指令
- 格式
- 操作
- 应用
逻辑运算指令
逻辑运算指令对操作数的要求大多与MOV指令相同。
- “非”运算指令要求操作数不能是立即数;
- 除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,AF值不变,并对SF、PF、ZF产生影响
“与”指令
格式
AND OPRD1,OPRD2
操作
两操作数按位相“与”,结果送目标地址。
“与”指令的应用
- 实现两操作数 按位相与的运算
AND BL,[SI] - 使目标操作数的 某些位不变,某些位清零
AND AL,0FH - 在操作数不变的情况下使CF和OF清零
AND AX,AX
“或”运算指令
格式
OR OPRD1,OPRD2
操作
两操作数按位相“或”,结果送目标地址
“或”指令的应用
- 实现两操作数按位相“或”的运算
OR AX,[DI] - 使某些位不变,某些位置“1”
OR CL,0FH - 在不改变操作数的 情况下使OF=CF=0
OR AX,AX
“非”运算指令
格式
NOT OPRD
操作
操作数按位取反再送回原地址
需要注意的是:
- 指令中的操作数不能是立即数
- 指令的执行对标志位无影响
“异或”运算指令
格式
XOR OPRD1,OPRD2
操作
两操作数相“异或”,结果送目标地址
“测试”指令
格式
TEST OPRD1,OPRD2
操作
执行“与”运算,但运算的结果不送回目标地址。
应用
常用于测试某些位的状态
例:TEST AL,02H ;若AL的D1位为1,则ZF=0,否则 ZF=1。