🎓 微机原理考点专栏(通篇免费)
欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。
为什么选择我的视频?
- 全程考点讲解:每一节视频都紧扣考试要点,拒绝冗余,专注于最关键的知识点。
- 系统且高效:我已经为你精心准备了系统的学习资料,让你不再迷茫。
🔗 点击这里观看我的视频讲解 🔗
我需要你的支持
我为这套视频投入了大量精力,希望它能对你的学习有所帮助。如果你觉得内容有用,请给我的视频点个赞、评论、并关注我,这将是我继续创作的最大动力!
🙏 感谢你的支持!祝你学有所成! 🙏
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): 如果
operand1
和operand2
相等,ZF 被设置(置1)。 - SF (Sign Flag): 如果结果为负数(
operand1
<operand2
),SF 被设置。 - OF (Overflow Flag): 如果发生有符号溢出,OF 被设置。
- CF (Carry Flag): 如果
operand1
小于operand2
,CF 被设置。
3. 乘法和除法指令
MUL 指令
- 格式:
MUL 源
- 作用: 执行无符号乘法,结果存放在 AX 或者 DX:AX 中。
- 示例:
MUL BX
— 乘法 AX = AX * BX。
怎么用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。
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 进行调整。
若AL的低4位大于9或AF=1,则自动将AL的内容加06H,AH内容加1并置AF=CF=1,将AL的高4位清零若AL的低4位小于或等于9,则仅将AL的高4位清零,并AF→CF
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清零。