169.逻辑指令

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, 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

 

 

 

 

 

原文地址:https://www.cnblogs.com/ZanderZhao/p/11052133.html