1.逻辑指令
逻辑运算指令
AND、OR、NOT、XOR、TEST 移位指令 SHL、SHR 、 SAL 、SAR、 ROL、ROR、RCL、RCR
2.逻辑运算指令
3.移位指令
逻辑左移 SHL OPR, CNT shift logical left | ||
逻辑右移 SHR OPR, CNT shift logical right | ||
算术左移 SAL OPR, CNT shift arithmetic left | (同逻辑左移) | |
算术右移 SAR OPR, CNT shift arithmetic right | ||
循环左移 ROL OPR, CNT rotate left | ||
循环右移 ROR OPR, CNT rotate right | ||
带进位循环左移 RCL OPR, CNT rotate left through carry | ||
带进位循环右移 RCR OPR, CNT rotate right through carry |
注意:
* OPR可用除立即数以外的任何寻址方式 OPR操作数 CNT操作次数* CNT=1,SHL OPR, 1 CNT>1,MOV CL, CNT SHL OPR, CL ; 以SHL为例 * 条件标志位: CF = 移入的数值OF=1 CNT=1时,最高有效位的值发生变化OF=0 CNT=1时,最高有效位的值不变 移位指令: SF、ZF、PF 根据移位结果设置,AF无定义 循环移位指令: 不影响 SF、ZF、PF、AF
例:(AX)= 0012H,(BX)= 0034H,把它们装配成(AX)= 1234H
MOV CL, 8
ROL AX, CLADD AX, BX
例:(BX) = 84F0H
(1) (BX) 为无符号数,求 (BX) / 2 SHR BX, 1 ; (BX) = 4278H (2) (BX) 为带符号数,求 (BX) ×2 SAL BX, 1 ; (BX) = 09E0H, OF=1 (3) (BX) 为带符号数,求 (BX) / 4 MOV CL, 2 SAR BX, CL ; (BX) = 0E13CH
(3) (BX)=84F0H,把 (BX) 中的 16 位数每 4 位压入堆栈
MOV CH, 4 ; 循环次数 MOV CL, 4 ; 移位次数NEXT: ROL BX, CL MOV AX, BX AND AX, 0FH PUSH AX DEC CH JNZ NEXT