Win32 汇编 - 移位- SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD

Win32 汇编 - 移位- SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRDSHL SHR SAL SAR 移位指令 SHL Shift Left 逻辑左移 SHR Shift Right 逻辑右移 SAL Shift Arithmetic Left 算术左移 SAR Shift Arithmetic Right 算术右移 其中的 SHL 和 SAL 相同 但 SHR 和 SAR 不同

大家好,我是讯享网,很高兴认识大家。 SHL、SHR、SAL、SAR: 移位指令
讯享网 ;SHL(Shift Left):      逻辑左移 ;SHR(Shift Right):      逻辑右移 ;SAL(Shift Arithmetic Left): 算术左移 ;SAR(Shift Arithmetic Right): 算术右移  ;其中的 SHL 和 SAL 相同, 但 SHR 和 SAR 不同.  ;SHL、SAL: 每位左移, 低位补 0, 高位进 CF ;SHR  : 每位右移, 低位进 CF, 高位补 0 ;SAR  : 每位右移, 低位进 CF, 高位不变  ;它们的结果影响 OF、SF、ZF、PF、CF ;它们的指令格式相同: SHL r/m, i8 SHL r/m, CL 
  
    
  
; Test24_1.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ;SHL、AL   mov al, b   shl al, 1   PrintHex al ;CE - b   sal al, 2   PrintHex al ;38 - 00b     mov al, b   mov cl, 2   shl al, cl   PrintHex al ;9C - b   ;SHR   mov al, b   shr al, 2   PrintHex al ;39 - 00b   ;SAR   mov al, b   sar al, 2   PrintHex al ;F9 - b   ret main endp end main

讯享网
ROL、ROR、RCL、RCR: 循环移位指令
讯享网 ;ROL(Rotate Left):        循环左移 ;ROR(Rotate Right):      循环右移 ;RCL(Rotate through Carry Left): 带进位循环左移 ;RCR(Rotate through Carry Right): 带进位循环右移  ;ROL: 循环左移, 高位到低位并送 CF ;ROR: 循环右移, 低位到高位并送 CF ;RCL: 循环左移, 进位值(原CF)到低位, 高位进 CF ;RCR: 循环右移, 进位值(原CF)到高位, 低位进 CF  ;它们的结果影响 OF、CF ;它们的指令格式相同: SHL r/m, i8 SHL r/m, CL 
  
    
  
; Test24_2.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ;ROL   mov al, b   rol al, 1   PrintHex al ;87 - 0b   ;ROR   mov al, b   ror al, 1   PrintHex al ;E1 - b   ;RCL   clc   mov al, b   rcl al, 1   PrintHex al ;5E - 0b     stc   mov al, b   rcl al, 1   PrintHex al ;5F - 0b     clc   mov al, b   rcl al, 2   PrintHex al ;BD - b   ;RCR   clc   mov al, b   rcr al, 2   PrintHex al ;BA - b   ret main endp end main

SHLD、SHRD: 双精度移位
讯享网 ;SHLD(Double-Precision Shift Left): 双精度左移 ;SHRD(Double-Precision Shift Right): 双精度右移  ;SHLD 和 SHRD 有三个操作数 ;操作数三: 是移位数目 ;操作数一: 是目的操作数 ;SHLD 左边被移出的位由操作数二相同数目的高位填充 ;SHRD 右边被移出的位由操作数二相同数目的低位填充 ;操作数二不变, 且须是寄存器  ;它们的结果影响 OF、SF、ZF、PF、CF ;它们的指令格式相同: SHLD r16/32/m16/m32, r16/32, i8 SHLD r16/32/m16/m32, r16/32, CL 
  
    
  
; Test25_3.asm .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ;SHLD   mov ax, 10000b   mov dx, 00000b   shld ax, dx, 2   PrintHex ax ;33C3 - 00011b   ;SHRD   mov ax, 00001b   mov dx, 00000000b   shrd ax, dx, 2   PrintHex ax ;C3CC - 01100b   ret main endp end main


讯享网

(转载自:http://www.cnblogs.com/del/archive/2010/04/15/1712490.html)

小讯
上一篇 2025-02-23 18:31
下一篇 2025-01-23 22:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/30033.html