讯享网 ;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)

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