学 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): 算术左移 ;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、AL mov al, 11100111bshl al, 1PrintHex al ;CE - 11001110b sal al, 2PrintHex al ;38 - 00111000b mov al, 11100111bmov cl, 2shl al, clPrintHex al ;9C - 10011100b ;SHR mov al, 11100111bshr al, 2PrintHex al ;39 - 00111001b ;SAR mov al, 11100111bsar al, 2PrintHex al ;F9 - 11111001b 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, stdcallinclude 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, 11000011brol al, 1PrintHex al ;87 - 010000111b ;ROR mov al, 11000011bror al, 1PrintHex al ;E1 - 11100001b ;RCL clcmov al, 10101111brcl al, 1PrintHex al ;5E - 01011110b stcmov al, 10101111brcl al, 1PrintHex al ;5F - 01011111b clcmov al, 10101111brcl al, 2PrintHex al ;BD - 10111101b ;RCR clcmov al, 11101011brcr al, 2PrintHex al ;BA - 10111010b 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, stdcallinclude 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, 1100110011110000bmov dx, 1111111100000000bshld ax, dx, 2PrintHex ax ;33C3 - 0011001111000011b ;SHRD mov ax, 0000111100110011bmov dx, 0000000011111111bshrd ax, dx, 2PrintHex ax ;C3CC - 1100001111001100b ret main endp end main
学 Win32 汇编[24] - 移位: 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: 移位指令 --------------------------------------------------------------------------- ...
- 学 Win32 汇编[17]: 关于压栈(PUSH)与出栈(POP) 之一
记得刚学多线程的时候, 碰到一个结构: //Delphi 的语法描述 PContext = ^TContext; _CONTEXT = recordContextFlags: DWORD;Dr0: D ...
- 学 Win32 汇编[6]: 伪指令 DUP 与数组
为什么80%的码农都做不了架构师?>>> 声明数组实例: ; Test6_1.asm .386 .model flat, stdcallinclude windows.inc ...
- 学 Win32 汇编[12]: PTR、OFFSET、ADDR、THIS
为什么80%的码农都做不了架构师?>>> PTR: 指定要操作的数据尺寸 ; Test12_1.asm .386 .model flat, stdcallinclude win ...
- 学 Win32 汇编[27] - 乘除指令: MUL、IMUL、DIV、IDIV
MUL: 无符号乘 ;影响 OF.CF 标志位 ;指令格式: ;MUL r/m ;参数是乘数;如果参数是 r8/m8, 将把 AL 做乘数, 结果放在 AX ;如果参数是 r16/m16, 将把 AX ...
- 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等...
跳转指令分三类: 一.无条件跳转: JMP; 二.根据 CX.ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转).JECXZ(ECX 为 0 则跳转); 三.根据 EFLAGS 寄存器的标志位 ...
- 学 Win32 汇编[26] - 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
为什么80%的码农都做不了架构师?>>> ;INC(Increment): 加一 ;DEC(Decrement): 减一 ;NEG(Negate): 求补(求反) ;ADD(A ...
- 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
跳转指令分三类: 一.无条件跳转: JMP; 二.根据 CX.ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转).JECXZ(ECX 为 0 则跳转); 三.根据 EFLAGS 寄存器的标志位 ...
- 【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 / ...
最新文章
- R语言length函数计算向量、列表、字符串长度实战
- jquery如何调用后台的方法
- FZU 1901 Period II(KMP中的next)题解
- 试用 Vista RC1 ,正式版离我们越来越近
- Python 列表 min() 方法
- 基于 HTML5 WebGL 的 3D 场景中的灯光效果
- 数据结构 —— 递归和树
- 重构:改善既有代码的设计 精彩书评一
- Math源码java_从零开始的Java学习记录(26)——Math类及其些许源码
- 训练GAN,你应该知道的二三事
- android解析json数据格式,Android编程解析Json格式数据的方法
- Android安卓——Android程序生命周期
- landsat8 Collection 1和Collection 2若干问题详细整理
- 数据结构课程设计报告
- Large Scale Machine Learning--An Engineering Perspective--0. 引言
- 离散题目10(判断是否为满射函数 )
- Python项目实战:使用PySpark对大数据进行分析
- 记录一次分布式微服务架构搭建过程
- 淘淘商城的第一天(传智播客2015年9月份项目)
- 和一个已经浙大本科毕业,现已年入百万的高管交流,交流时长一小时,看看我们究竟谈了什么?
热门文章
- linux下检查是否安装过某软件包(gcc,pcre-devel,zlib-devel,openssl-devel)
- 安卓海豚wii模拟器_dolphin模拟器安卓版
- 怎么看待《百度清风算法3.0》?
- JFrame添加图片以及使用的教程
- dubbo解析-Merger接口作用及其实现类介绍
- 51单片机 玩转按键加减切换+数码管+Proteus仿真
- 我的世界服务器回到死亡位置,我的世界返回死亡地点指令是什么
- N-ary 题型总结
- 微商城分销系统软件首选—好分销微信三级分销系统源码定制
- 【ROS】移动机器人导航仿真(2)——SLAM(gmapping)