Win32 汇编 - 移位: SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR、SHLD、SHRD
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相关推荐
- Win32ASM学习[13]:移位指令SHL,SHR,SAL,SAR,ROL,ROR,RCL,RCR,SHLD,SHRD
一. SHL.SHR.SAL.SAR: 移位指令 --------------------------------------------------------------------------- ...
- 【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 / ...
- 学 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): 算术 ...
- 汇编SHR、SHL、SAR、SAL、ROL、ROR、RCL、RCR指令
SHL.SHR.SAL.SAR: 移位指令 ;SHL(Shift Left): 逻辑左移 ;SHR(Shift Right): 逻辑右移 ;SAL(Shift Arithmetic Left): 算术 ...
- x86移位SHL、SHR、SAL、ROL、RCR等指令
x86移位SHL.SHR.SAL.ROL.RCR等指令简介 指令 语法 说明 SHL SHL dest, count (逻辑)左移 SHR SHL dest, count (逻辑)右移 SAL SHL ...
- ROL,ROR,SAR,SHR,SAL,SHL区别
SHL,SAL分别是逻辑左移和算术左移,运行结果是一样的,都是数据往左移动,然后在右边补零: SHR是逻辑右移,数据往右移动,在左边补零.如:1000 0000->0010 0000(逻辑右移两 ...
- 汇编语言-009(表驱动选择 、条件控制流伪指令 、逻辑移位SHL,SHR 算术移位SAL,SAR)
1: 表驱动选择,用查表来代替多路选择结构的一种方法 .386 .model flat,stdcallinclude Irvine32.inc.stack 4096 ExitProcess PROTO ...
- SAR,SHR,SAL,SHL区别
SHL,SAL 逻辑左移和算术左移,运行结果是一样的,都是数据往左移动,然后在右边补零: SHR 逻辑右移,数据往右移动,在左边补零.如:1000 0000->0010 0000(逻辑右移两位) ...
- 汇编语言-010(循环移位ROL,ROR 、进位循环进位RCL,RCR 、有符号数溢出 、双精度移位SHLD,SHRD、SHL和ADD计算 、位运算应用)
1 :循环移位ROL,ROR,带进位循环进位RCL,RCR .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD ...
最新文章
- 学习OpenCV——SVM
- 请检查网站服务器是否正常.,网站访问不了?如何做自我检查?
- pandas 生成html表格_Pandas 读写html
- No module named 'Tkinter'
- TensorFlow构建二维数据拟合模型(3)
- 获取路径传过来的地址 截取参数
- linux C 语言的 system
- 中文分词与马尔科夫模型之二(隐马尔科夫模型与维特比)
- 寒江独钓:键盘的过滤 学习笔记
- Temporal Action Proposal Generation with Transformers TAPG transformer论文阅读笔记
- 保利威视后台编辑FLASH播放器
- JixiPix Portrait Painter for mac(照片转油画工具)
- 2023年全国最新工会考试精选真题及答案46
- 上门回收废品的app
- 使用php解析url中出现\u002乱码问题的方法
- linux增加elk用户,在Ubuntu 18.04 Bionic Beaver Linux上安装ELK
- 安装Ubuntu18.04虚拟机
- 激光雷达的分类、主流激光雷达、原理是什么
- crmeb电商系统源码
- 开发团队PMO如何构建管理更有效?
热门文章
- 下载Docker Compose超时的问题(Fail connect to github-production-release-asset-2e65be.s3.amazonaws.com:443)
- arcgis怎么压缩tif文件_PDF文件怎么压缩到最小?PDF压缩失败怎么办?-PDF ——快科技(驱动之家旗下媒体)-...
- 利盟Lexmark Intuition S508 一体机驱动
- IMP811REUS/T小秘密
- linux 扫描 hba卡磁盘,Linux下更换HBA卡重新扫盘
- 北理工计算机2020学硕录取,北京理工大学2020硕士研究生拟录取名单
- 51单片机两只老虎 c语言,基于51单片机做音乐盒(两只老虎)
- 计算机音乐-乐理知识(1)
- 数据库关于事务的详解分析(全)包含面试常问的细节
- C++调用opencv完成运动目标捕捉