邏輯運算指令
AND、OR、NOT、XOR、TEST
移位指令
SHL、SHR 、 SAL 、SAR、
ROL、ROR、RCL、RCRpost
邏輯左移 spa SHL OPR, CNTcode shift logical leftblog |
![]() |
|
邏輯右移 SHR OPR, CNTget shift logical rightit |
![]() |
|
算術左移 table SAL OPR, CNTclass shift arithmetic leftdate |
(同邏輯左移) | |
算術右移 循環 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, CL
ADD 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