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
 
 
                    
                

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号