SHL指令

SHL指令使目的操作数逻辑左移一位,最低位用0填充。最高位移入进位标志位,而进位标志位中原来的数值被丢弃。
若将1100 1111左移1位,该数就变为 1001 1110

例如:
BL左移一位。最高位复制到进位标志位,最低位填充0:

mov bl, 8FH              ; BL = 10001111b
shi bl, 1        ; CF = 1, BL = 00011110b

当一个数多次进行左移时,进位标志位保存的是最后移出最高有效位(MSB)的数值。

mov al, 10000000b
shi al, 2                   ; CF = 0, AL = 00000000b

步骤:
1.将一个寄存器或者内存单元中过的数据向左移动bit位。
2.将溢出的这一位放到CF中。
3.最低位用0补充。

位元乘法

数值进行左移即行了位元乘法。
任何操作数左移 n 位,将该数乘以 2n

例如,十进制数 10 左移两位,其结果与10 * 2n相同。

mov al, 10      ; 00001010
shl dl ,2       ; 00101000

SHR指令

SHR指令使目的操作数逻辑右移一位,最高位用0填充。最低位置复制到进位标志位,而进位标位中原来的数值被丢弃。

例如:
AL中的最低位0被复制到进位标志位,而AL中的最高位用0填充。

mov al, 0D0H       ; aL = 11010000b
shr al, 1          ; aL = 01101000b, CF = 0

在多位移操作中,最后一个移出位0的数值进入进位标志位。

mov al, 00000010b
shr al, 2                        ; AL = 00000000b, CF = 1

总结:
当一个数多次进行右移时,进位标志位保存的是最后移出最低有效位的数值。

汇编 SHL指令和SHR指令相关推荐

  1. 左移shl、右移shr指令用法

    左移shl.右移shr指令用法 shl和shr是逻辑移位指令. 1.shl是逻辑左移指令,它的功能为: (1)将一个寄存器或内存单元中的数据向左移位: (2)将最后移出的一位写入CF中: (3)最低位 ...

  2. 汇编 端口 shl和shr指令

    1 端口 CPU可以直接读写以下3个地方的数据: CPU内部的寄存器 内存单元 端口 1.1 端口的读写 解决了串/并行 改变的问题 对端口的读写不能用mov,push,pop等:只有in和out 访 ...

  3. 汇编 shl和shr指令的使用

    shl和shr是逻辑移位指令. shl是逻辑左移指令,它的功能为: (1)将一个寄存器或内存单元中的数据向左移位: (2)将最后移出的一位写入CF中: (3)最低位用0补充. 指令: mov al,0 ...

  4. SHL、SHR指令的区别

    SHL指令 假设 EAX=00000001 SHL EAX,0x2 将EAX中的数向左移两位,相当于 EAX中数的十进制是1,乘以2^2,等于4 所以结果EAX=00000004 SHR指令 假设 E ...

  5. 汇编语言随笔(12)-端口读写、shl和shr指令、检测点14和实验14

    端口读写 在pc系统中,CPU可定位的端口数量为64k个,地址范围为0~65535.对端口的读写只能采用 in 和 out ,分别表示从端口读取数据和往端口写入数据.       在 in 和 out ...

  6. 汇编语言--shl和shr指令

    shl和shr是逻辑移位指令 shl是逻辑左移指令,它的功能为: 将一个寄存器或内存单元中的数据向左移位: 将最后移出的一位写入CF中: 最低位用0补充. shr是逻辑右移指令

  7. C语言逻辑左移指令shl怎么用,汇编语言SHL(左移)指令:将操作数逻辑左移一位...

    SHL(左移)指令使目的操作数逻辑左移一位,最低位用 0 填充.最高位移入进位标志位,而进位标志位中原来的数值被丢弃: 若将 1100 1111 左移 1 位,该数就变为 1001 1110: SHL ...

  8. 【Android 逆向】x86 汇编 ( cmp 比较指令 | test 比较指令 )

    文章目录 一.cmp 比较指令 二.test 比较指令 总结 一.cmp 比较指令 cmp 指令通过 减法运算 , 影响标志位 CPAZO ; cmp eax, ebx 上述指令执行时 , eax - ...

  9. 汇编中Enter和Leave指令

    Enter的作用相当==push ebp和mov ebp,esp 这后面两句大家很熟悉吧?函数开始一般都是这两句 Leave的作用相当==mov esp,ebp和pop ebp 而这后面这两句也很常见 ...

最新文章

  1. 计算机网络实验socket编程,计算机网络实验 socket编程
  2. 数据结构 - 直接插入排序法
  3. 格莱泽检验matlab,计量经济学实验指导书
  4. 【iCore4 双核心板_ARM】例程二十:LWIP_TCP_CLIENT实验——以太网数据传输
  5. HttpDNS功能说明及实现
  6. JDBC连接数据库格式
  7. webflow如何使用_我如何使用Webflow构建辅助项目以帮助设计人员进行连接
  8. 温故知新,.Net Core遇见WinForms客户端窗体框架,在DotNet Core大一统基础上老树发芽...
  9. Asp.net 面向接口框架之应用程序上下文作用域组件
  10. 从试卷中悟出的道理……
  11. 嵌入式电路设计(外围模块)
  12. Python:如何安装与使用 pip
  13. 黑马程序员:java基础学习——数组
  14. Android项目报错:Could not resolve com.android.support.constraint:constraint-layout:2.0.2.
  15. 软著申请合作开发协议模板
  16. SVN 版本回退 命令行
  17. 小米笔记本UEFI关闭安全启动
  18. springboot整合容联云发短信验证码
  19. vscode更改配置文件路径_Visual Studio Code安装和配置
  20. JPA实现领域驱动设计(DDD) 中值对象的持久化

热门文章

  1. .NET CoreWebApi基于EasyNetQ使用RabbitMQ消息队列
  2. python之subprocess
  3. 马云任软银集团董事 阿里巴巴全球化布局明朗
  4. 关于Rosetta的那些事
  5. ld --whole-archive 和 --no-whole-archive学习记录
  6. 一个可以离线查询 IP 来源和 ISP 信息的终端利器
  7. 利用教育邮箱注册JetBrains产品(pycharm、idea等)的方法
  8. 快乐地谈谈:关于RSA算法中求私钥d的欧几里得方法(辗转相除法)考试向的欸
  9. 计算机网络室工作总结,计算机教室工作总结范文
  10. 上海高校计算机二级考纲,上海市普通高校计算机等级考试考纲