汇编语言:基于x86处理器考前笔记 | 第七章 整数运算

一、移位与循环移位指令

  1. 指令类型(都会改变 CF)
    • 逻辑移位 :SHL(逻辑左移)、SHR(逻辑右移)。例如,SHL 指令将操作数左移,++最低位补 0++ ,最高位进入进位标志 CF;SHR 指令右移时,++最高位补 0++,最低位进入 CF。
    • 算术移位 :SAL(算术左移)、SAR(算术右移)。与逻辑移位不同在于带符号,算术左移和逻辑左移在二进制位移动上相同,但++算术右移时,负数最高位补 1,正数补 0++,而逻辑右移一律补 0。
    • 循环移位 :ROL(循环左移)、ROR(循环右移)。循环左移时最低位以最高位填充,++最高位传送到 CF++ ;循环右移++反之++ ,且不丢弃数据,可用于将特定位移入 CF。
    • 带进位的循环移位 :RCL(带进位循环左移)、RCR(带进位循环右移)。在循环移位基础上保留 CF 原数据,移动方式类似循环移位。RCL al,3这里 3 是移动位数
      • 以 RCL 为例,数组高位移入 CF,CF 移入低位
    • 双精度移位 :SHLD(双精度左移)、SHRD(双精度右移),用于对双字数据的移位操作。SHLD 目的操作数,源操作数,1(次数)
  1. 应用示例
    • 位元乘除法:SHL 可实现位元乘法,如将 5(00000101)左移 1 位得 10(00001010),相当于乘以 2;SHR 可实现位元除法,如 32(00100000)右移 1 位得 16(00010000)。

二、乘法指令

  1. MUL 指令(无符号数乘法)
    • 操作数规则 :8 位操作数与 AL 寄存器相乘,结果存于 AX;16 位操作数与 AX 相乘,结果存于 DX:AX;32 位操作数与 EAX 相乘,结果存于 EDX:EAX。
    • 8 位:
    • 16 位:
    • 特点 :乘积是被乘数与乘数大小的 2 倍以防止溢出;会用到 CF 标志寄存器,乘积高半部分不为零则 CF 置 1;乘数和被乘数大小相同。例如,mov al,5h,mov bl,10h,mul bl 后 AX = 0050h,CF = 0。
  2. IMUL 指令(有符号数乘法)
    • 与 MUL 区别:保留乘积符号;有三种格式(单、双、三操作数);若乘积高半部分不是低半部分符号扩展,则 CF = 1、OF = 1,可据此忽略高半部分。如 mov al,48,mov imul b1 b1,4 后,ax = 00C0h,OF = 1。

三、除法指令

  1. DIV 指令(无符号数除法指令):被除数为 AX 时,除数为 reg/mem8,商存于 AL,余数存于 AH;被除数为 DX:AX 时,除数为 reg/mem16,商存于 AX,余数存于 DX;被除数为 EDX:EAX 时,除数为 reg/mem32,商存于 EAX,余数存于 EDX。如 mov ax,0083h,mov bl,2,div bl 后 AL = 41h,AH = 01h。
复制代码
- 示例 1(8 位除法):![](https://i-blog.csdnimg.cn/img_convert/1014ae9a3b01c9a4463a00e094fc28d5.png)
- 图示:![](https://i-blog.csdnimg.cn/img_convert/779c1bd7d40f71b0e99f181b9073b363.png)
- 示例 2(16 位除法):![](https://i-blog.csdnimg.cn/img_convert/51a9d2fdb90ad957ecf1d8e5ffae0c99.png)
  1. iDIV 指令(有符号数除法):执行前需进行符号扩展(如 CBW、CWD、CDQ 指令)。如.data wordVal SWORD -101,mov dx,0,mov ax, wordVal,cwd 后再进行除法操作。

四、扩展加减法

  1. ADC 指令 :格式与 ADD 类似,逻辑:目的操作数 = 目的操作数 + 源操作数 + 进位标志位的值,结果存于 2 倍大小的寄存器。如
  2. SBB 指令:目的操作数 = 目的操作数 - 源操作数 - 进位标志位的值。如 mov edx,7,mov eax,1,sub eax,2,sbb edx,0 实现了对无大小限制数的加减法操作。
相关推荐
清木!42 分钟前
数据仓库详解
笔记
大筒木老辈子6 小时前
Linux笔记---协议定制与序列化/反序列化
网络·笔记
草莓熊Lotso6 小时前
【C++】递归与迭代:两种编程范式的对比与实践
c语言·开发语言·c++·经验分享·笔记·其他
我爱挣钱我也要早睡!9 小时前
Java 复习笔记
java·开发语言·笔记
汇能感知14 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun14 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao14 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾14 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT15 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
ST.J15 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记