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, stdcallinclude    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib.code
main proc ;SHL、ALmov al, 11100111bshl al, 1PrintHex al ;CE - 11001110bsal al, 2PrintHex al ;38 - 00111000bmov al, 11100111bmov cl, 2shl al, clPrintHex al ;9C - 10011100b ;SHRmov al, 11100111bshr al, 2PrintHex al ;39 - 00111001b ;SARmov al, 11100111bsar al, 2PrintHex al ;F9 - 11111001bret
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, stdcallinclude    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib.code
main proc ;ROLmov al, 11000011brol al, 1PrintHex al ;87 - 010000111b ;RORmov al, 11000011bror al, 1PrintHex al ;E1 - 11100001b ;RCLclcmov al, 10101111brcl al, 1PrintHex al ;5E - 01011110bstcmov al, 10101111brcl al, 1PrintHex al ;5F - 01011111bclcmov al, 10101111brcl al, 2PrintHex al ;BD - 10111101b ;RCRclcmov al, 11101011brcr al, 2PrintHex al ;BA - 10111010bret
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, stdcallinclude    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib.code
main proc ;SHLDmov ax, 1100110011110000bmov dx, 1111111100000000bshld ax, dx, 2PrintHex ax ;33C3 - 0011001111000011b ;SHRDmov ax, 0000111100110011bmov dx, 0000000011111111bshrd ax, dx, 2PrintHex ax ;C3CC - 1100001111001100bret
main endp
end main

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

Win32 汇编 - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD相关推荐

  1. Win32ASM学习[13]:移位指令SHL,SHR,SAL,SAR,ROL,ROR,RCL,RCR,SHLD,SHRD

    一. SHL.SHR.SAL.SAR: 移位指令 --------------------------------------------------------------------------- ...

  2. 【Android 逆向】x86 汇编 ( add / sub / mul / div 数值运算指令 | xor / not / sal / sar / shl / shr 位运算指令 )

    文章目录 一.add / sub / mul / div 数值运算指令 二.xor / not / sal / sar / shl / shr 位运算指令 总结 一.add / sub / mul / ...

  3. 学 Win32 汇编[24] - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD

    SHL.SHR.SAL.SAR: 移位指令 ;SHL(Shift Left): 逻辑左移 ;SHR(Shift Right): 逻辑右移 ;SAL(Shift Arithmetic Left): 算术 ...

  4. 汇编SHR、SHL、SAR、SAL、ROL、ROR、RCL、RCR指令

    SHL.SHR.SAL.SAR: 移位指令 ;SHL(Shift Left): 逻辑左移 ;SHR(Shift Right): 逻辑右移 ;SAL(Shift Arithmetic Left): 算术 ...

  5. x86移位SHL、SHR、SAL、ROL、RCR等指令

    x86移位SHL.SHR.SAL.ROL.RCR等指令简介 指令 语法 说明 SHL SHL dest, count (逻辑)左移 SHR SHL dest, count (逻辑)右移 SAL SHL ...

  6. ROL,ROR,SAR,SHR,SAL,SHL区别

    SHL,SAL分别是逻辑左移和算术左移,运行结果是一样的,都是数据往左移动,然后在右边补零: SHR是逻辑右移,数据往右移动,在左边补零.如:1000 0000->0010 0000(逻辑右移两 ...

  7. 汇编语言-009(表驱动选择 、条件控制流伪指令 、逻辑移位SHL,SHR 算术移位SAL,SAR)

    1: 表驱动选择,用查表来代替多路选择结构的一种方法 .386 .model flat,stdcallinclude Irvine32.inc.stack 4096 ExitProcess PROTO ...

  8. SAR,SHR,SAL,SHL区别

    SHL,SAL 逻辑左移和算术左移,运行结果是一样的,都是数据往左移动,然后在右边补零: SHR 逻辑右移,数据往右移动,在左边补零.如:1000 0000->0010 0000(逻辑右移两位) ...

  9. 汇编语言-010(循环移位ROL,ROR 、进位循环进位RCL,RCR 、有符号数溢出 、双精度移位SHLD,SHRD、SHL和ADD计算 、位运算应用)

    1 :循环移位ROL,ROR,带进位循环进位RCL,RCR .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD ...

最新文章

  1. 学习OpenCV——SVM
  2. 请检查网站服务器是否正常.,网站访问不了?如何做自我检查?
  3. pandas 生成html表格_Pandas 读写html
  4. No module named 'Tkinter'
  5. TensorFlow构建二维数据拟合模型(3)
  6. 获取路径传过来的地址 截取参数
  7. linux C 语言的 system
  8. 中文分词与马尔科夫模型之二(隐马尔科夫模型与维特比)
  9. 寒江独钓:键盘的过滤 学习笔记
  10. Temporal Action Proposal Generation with Transformers TAPG transformer论文阅读笔记
  11. 保利威视后台编辑FLASH播放器
  12. JixiPix Portrait Painter for mac(照片转油画工具)
  13. 2023年全国最新工会考试精选真题及答案46
  14. 上门回收废品的app
  15. 使用php解析url中出现\u002乱码问题的方法
  16. linux增加elk用户,在Ubuntu 18.04 Bionic Beaver Linux上安装ELK
  17. 安装Ubuntu18.04虚拟机
  18. 激光雷达的分类、主流激光雷达、原理是什么
  19. crmeb电商系统源码
  20. 开发团队PMO如何构建管理更有效?

热门文章

  1. 下载Docker Compose超时的问题(Fail connect to github-production-release-asset-2e65be.s3.amazonaws.com:443)
  2. arcgis怎么压缩tif文件_PDF文件怎么压缩到最小?PDF压缩失败怎么办?-PDF ——快科技(驱动之家旗下媒体)-...
  3. 利盟Lexmark Intuition S508 一体机驱动
  4. IMP811REUS/T小秘密
  5. linux 扫描 hba卡磁盘,Linux下更换HBA卡重新扫盘
  6. 北理工计算机2020学硕录取,北京理工大学2020硕士研究生拟录取名单
  7. 51单片机两只老虎 c语言,基于51单片机做音乐盒(两只老虎)
  8. 计算机音乐-乐理知识(1)
  9. 数据库关于事务的详解分析(全)包含面试常问的细节
  10. C++调用opencv完成运动目标捕捉