汇编语言SHL(左移)指令:将操作数逻辑左移一位
SHL(左移)指令使目的操作数逻辑左移一位,最低位用 0 填充。最高位移入进位标志位,而进位标志位中原来的数值被丢弃:
若将 1100 1111 左移 1 位,该数就变为 1001 1110:
SHL 的第一个操作数是目的操作数,第二个操作数是移位次数:
【示例】下列指令中,BL 左移一位。最高位复制到进位标志位,最低位填充 0:
若将 1100 1111 左移 1 位,该数就变为 1001 1110:
SHL 的第一个操作数是目的操作数,第二个操作数是移位次数:
SHL destination,count
该指令可用的操作数类型如下所示:
SHL reg, imm8
SHL mem, imm8
SHL reg, CL
SHL mem, CL
【示例】下列指令中,BL 左移一位。最高位复制到进位标志位,最低位填充 0:
mov b1, 8Fh ; BL = 10001111b
shl bl, 1 ; CF = 1, BL = 00011110b
mov al, 10000000b
shl al, 2 ; CF = 0, AL = 00000000b
位元乘法
数值进行左移(向 MSB 移动)即执行了位元乘法(Bitwise Multiplication)。例如,SHL 可以通过 2 的幕进行乘法运算。任何操作数左移 n 位,即将该数乘以 2n。现将整数 5 左移一位则得到 5 x 2¹ = 10:
mov dl, 5 ; 移动前:00000101 = 5
shl dl, 1 ; 移动后:00001010 = 10
mov dl, 10 ;移动前:00001010
shl dl, 2 ;移动后:00101000
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频