逻辑指令: 逻辑运算指令 AND、OR、NOT、XOR、TEST 移位指令 SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR
1 逻辑指令: • 逻辑运算指令 AND、OR、NOT、XOR、TEST • 移位指令 SHL、SHR 、 SAL 、SAR、ROL、ROR、RCL、RCR
罗辑非指令: NOT OPR OPR不能为立即数 执行操作:(OPR)←-(OPR) *不影响标志位 逻辑与指令: AND DST,SRC 执行操作:(DST)←(DsT)∧(SRC) 逻辑或指令: OR DST,SRC 执行操作:(DST)←(DST)v(SRC) CF OF SF ZF PF AF 异或指令: XOR DST,SRC 无定义 执行操作:(DST)←(DST)V(SRC) 根据运算结果设置 测试指令: TEST OPR1,OPR2 执行操作:(OPR1)∧(OPR2)
2 逻辑非指令:NOT OPR * OPR 不能为立即数 执行操作: ( OPR ) ( OPR ) * 不影响标志位 逻辑与指令:AND DST , SRC 执行操作: ( DST ) ( DST ) ( SRC ) 逻辑或指令:OR DST , SRC 执行操作: ( DST ) ( DST ) ( SRC ) 异或指令: XOR DST , SRC 执行操作: ( DST ) ( DST ) ( SRC ) 测试指令: TEST OPR1 , OPR2 执行操作: ( OPR1 ) ( OPR2 ) CF OF SF ZF PF AF 0 0 * * * 无定义 根据运算结果设置 • 逻辑运算指令
水*水水水水 AND AL OFCH AND11111100 例:置AL的第5位为1 水*****水 OR AL 20H OR00100000 例:使AL的第0、1位变反 XOR00000011 XOR AL 3 例:测试某些位是0是1 TEST AL JZ EVEN
3 例:屏蔽AL 的第 0、1 两位 AND AL , 0FCH 例:置AL 的第 5 位为 1 OR AL , 20H 例:使AL 的第 0、1 位变反 XOR AL , 3 例:测试某些位是0 是 1 TEST AL , 1 JZ EVEN * * * * * * * * OR 0 0 1 0 0 0 0 0 * * 1 * * * * * * * * * * * * * XOR 0 0 0 0 0 0 1 1 * * * * * * * * * * * * * * * * AND 1 1 1 1 1 1 0 0 * * * * * * 0 0
多位指 逻辑左移 SHL OPR,CNT CF 逻辑右移 SHR OPR,CNT CF 算术左移 SAL OPR,CNT(同逻辑左移) 算术右移 SAR OPR、CNT CF
4 逻辑左移 SHL OPR , CNT 逻辑右移 SHR OPR , CNT 算术左移 SAL OPR , CNT(同逻辑左移) 算术右移 SAR OPR , CNT CF 0 • 移位指令 0 CF CF
循环右移 ROR OPR,CNT CF 带进位循环左移 RCL OPR,CNT 带进位循环右移 RCR OPR,CNT 5
5 循环左移 ROL OPR , CNT 循环右移 ROR OPR , CNT 带进位循环左移 RCL OPR , CNT 带进位循环右移 RCR OPR , CNT CF CF CF CF