3.5 算术运算指令

在这里插入图片描述

🎓 微机原理考点专栏(通篇免费)

欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。

为什么选择我的视频?

  • 全程考点讲解:每一节视频都紧扣考试要点,拒绝冗余,专注于最关键的知识点。
  • 系统且高效:我已经为你精心准备了系统的学习资料,让你不再迷茫。

🔗 点击这里观看我的视频讲解 🔗

我需要你的支持

我为这套视频投入了大量精力,希望它能对你的学习有所帮助。如果你觉得内容有用,请给我的视频点个赞、评论、并关注我,这将是我继续创作的最大动力!

🙏 感谢你的支持!祝你学有所成! 🙏


3.5 算术运算指令

1. 基本算术运算指令

ADD 指令

  • 格式: ADD 目的, 源
  • 作用: 对两个操作数进行加法运算,并将结果存入目的操作数中。
  • 示例: ADD AX, BX — 将 BX 中的值加到 AX 中。

SUB 指令

  • 格式: SUB 目的, 源
  • 作用: 对两个操作数进行减法运算,并将结果存入目的操作数中。
  • 示例: SUB AX, BX — 将 BX 中的值从 AX 中减去。

MOV AX, 5 ; 将 5 存入 AX 寄存器
MOV BX, 3 ; 将 3 存入 BX 寄存器
SUB AX, BX ; 将 BX 中的值 (3) 从 AX 中减去 (5 - 3),结果 2 存入 AX
ADC 指令

  • 格式: ADC 目的, 源
  • 作用: 带进位加法,将 CF 标志位的值参与加法运算。
  • 示例: ADC AX, BX — 执行 AX = AX + BX + CF。

SBB 指令

  • 格式: SBB 目的, 源
  • 作用: 带借位减法,将 CF 标志位的值参与减法运算。
  • 示例: SBB AX, BX — 执行 AX = AX - BX - CF。

INC 指令

  • 格式: INC 目的
  • 作用: 目的操作数加 1,不影响 CF 标志位。
  • 示例: INC AX — 将 AX 中的值加 1。

DEC 指令

  • 格式: DEC 目的
  • 作用: 目的操作数减 1,不影响 CF 标志位。
  • 示例: DEC AX — 将 AX 中的值减 1。

NEG 指令

  • 格式: NEG 目的
  • 作用: 求取操作数的补码,即取反加 1。
  • 示例: NEG AX — AX = -AX。

2. 比较指令

CMP 指令

  • 格式: CMP 目的, 源
  • 作用: 对两个操作数进行比较,但不返回结果,只是将运算过程和结果反映在标志位上。
  • 示例: CMP AX, BX — 比较 AX 和 BX,设置标志位。

标志位设置

CMP 指令会影响以下标志位:

  • ZF (Zero Flag): 如果 operand1operand2 相等,ZF 被设置(置1)。
  • SF (Sign Flag): 如果结果为负数(operand1 < operand2),SF 被设置。
  • OF (Overflow Flag): 如果发生有符号溢出,OF 被设置。
  • CF (Carry Flag): 如果 operand1 小于 operand2,CF 被设置。

image.png

3. 乘法和除法指令

MUL 指令

  • 格式: MUL 源
  • 作用: 执行无符号乘法,结果存放在 AX 或者 DX:AX 中。
  • 示例: MUL BX — 乘法 AX = AX * BX。

image.png
image.png
怎么用MUL指令来完成8位的乘法?

被乘数要放在寄存器AL中,

MOV AL,66 ;AL存放被乘数,66是16进制数
乘数要保存在8位寄存器或者内存中,

MOV BL,9 ;BL存放乘数,9是16进制数
然后,通过MUL指令,让乘数和被乘数相乘

MUL BL ;因为被乘数默认放在AL,所以只需要一个操作数来告诉CPU乘数是多少
最后,结果存放在AX中
IMUL 指令

  • 格式: IMUL 源
  • 作用: 执行有符号乘法,结果存放在 AX 或者 DX:AX 中。
  • 示例: IMUL BX — 乘法 AX = AX * BX。

image.png
image.png
image.png
image.png

4. 扩展与转换指令

CBW 指令

  • 作用: 将 AL 的内容从字节扩展为字,存放到 AX 中。
  • 示例: 如果 AL 的值是 FFH,则 CBW 后 AX 的值为 FFFFH。

CWD 指令

  • 作用: 将 AX 的内容扩展为双字,存放到 DX:AX 中。
  • 示例: 如果 AX 的值是 FFFFH,则 CWD 后 DX:AX 的值为 FFFFFFFFH。

5. 除法指令

DIV 指令

  • 格式: DIV 源
  • 作用: 执行无符号除法,商存放在 AL 或 AX 中,余数存放在 AH 或 DX 中。
  • 示例: DIV BX — 执行 AX = AX / BX,余数存入 DX。

IDIV 指令

  • 格式: IDIV 源
  • 作用: 执行有符号除法,商存放在 AL 或 AX 中,余数存放在 AH 或 DX 中。
  • 示例: IDIV BX — 执行 AX = AX / BX,余数存入 DX。

6. 非压缩 BCD 调整指令

AAA/AAS 指令

  • 作用: 在对非压缩 BCD 数字进行加法或减法后进行调整,使结果合法。
  • 示例: 在 ADD AL, BL 后,执行 AAA,对 AL 进行调整。

image.png
若AL的低4位大于9或AF=1,则自动将AL的内容加06H,AH内容加1并置AF=CF=1,将AL的高4位清零若AL的低4位小于或等于9,则仅将AL的高4位清零,并AF→CF
image.png
image.png

7. 压缩 BCD 调整指令

DAA/DAS 指令

  • 作用: 在对压缩 BCD 数字进行加法或减法后进行调整,使结果合法。
  • 示例: 在 ADD AL, BL 后,执行 DAA,对 AL 进行调整。

如果_AL的低4位大于9或AF=1,则AL的内容加06H,并_将_AF置1_;然后如果_AL的高4位大于9_或CF=1,则AL的内容加60H,且将CF置1。如果两个都不满足,则将AF,CF清零。
image.png

  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运之光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值