169.邏輯指令

1.邏輯指令

 邏輯運算指令
AND、OR、NOT、XOR、TEST
 移位指令
SHL、SHR 、 SAL 、SAR、
ROL、ROR、RCL、RCRpost

 

2.邏輯運算指令

3.移位指令

 

邏輯左移  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

 

 

 

 

相關文章
相關標籤/搜索