算术运算指令只能处理4种类型的数据:
- 无符号十进制数
- 带符号二进制数
- 无符号压缩十进制整数
- 无符号非压缩十进制整数
压缩十进制数:一个字节中存放两个BCD码十进制数
非压缩十进制数:一个字节的低半字节存放十进制数,高半字节全为零。
1. 加法指令
① ADD 加法指令 (Addition)
ADD 目的, 源
(1)功能:目的 ← 目的 + 源
(2)工作特点:
- 影响CF、OF、PF、SF、ZF、AF标志位。
(3)要求:
- 目的操作数只能用寄存器或存储单元
- 源和目的操作数不能同时为存储器
- 源和目的操作数的长度相同
② ADC 带进位的加法指令 (Addition with Carry)
ADC 目的, 源
(1)功能:源 ← 目的 + 源 + CF的当前值
CF:进位标志
(2)工作特点:
- 影响CF、OF、PF、SF、ZF、AF标志位。
(3)要求:
- 源和目的操作数不能同时为存储器
- 源和目的操作数长度必须相同
③ INC 增量指令 (Increment)
INC 目的
(1)功能:目的 ← 目的 + 1
(2)工作特点:
- 执行后影响AF、OF、PF、SF、
- 主要用于循环程序
(3)要求:
- 利用PTR操作符说明存储单元是字或是字节。
④ AAA 加法的ASCII调整指令 (ASCII Adjust for Addition)
AAA
(1)功能:
⑤ DAA 加法的十进制调整指令 (Decimal Adjust for Addition)
DAA
(1)功能:将两个压缩BCD数相加后的结果调整为正确的压缩BCD数。
- 当AL中 低半字节>9 或 AF = 1,则AL ← AL + 6
- 当AL中 高半字节>9 或 CF = 1,则AL ← AL + 60H,且CF置1。
(3)要求
- 相加后的结果必须在AL中,才能用此条指令。
2. 减法指令
① SUB 减法指令 (Subtraction)
SUB 目的,源
(1)功能:目的 ← (目的 - 源)
(2)工作特点:
(3)对标志位的影响:
② SBB 带借位的减法指令 (Subtract with Borrow)
SBB 目的 源
(1)功能:目的 ← (目的 - 源 - CF)
(2)工作特点:
- 主要用于多字节减法。
(3)要求:
③ DEC 减量指令 (Decrement)
DEC 目的
(1)功能:目的 ← (目的 - 1)
④ NEG 取负指令 (Negate)
NEG 目的
(1)功能:对目的操作数取负,结果送回目的操作数。
(2)工作特点:
(3)要求:
⑤ CMP 比较指令 (Compare)
CMP 目的 源
(1)功能:目的 - 源
(2)对标志位的影响:
- 如果 源 > 目的,则CF置1
- 如果 源 = 目的,则ZF置1
(3)要求:
- 目的操作数不能为立即数
- 源操作数可以是立即数,寄存器,存储器
⑥ AAS 减法的ASCII调整指令 (ASCII Adjust for Subtraction)
AAS
(1)功能:
(2)工作特点:
(3)要求:
⑦ DAS 剑法的十进制调整指令 (Decimal Adjust for Subtraction)
DAS
(1)功能:
(2)工作特点:
(3)要求:
3. 乘法指令
① MUL 无符号数乘法指令 (Multiply)
MUL 源
(1)功能:把源操作数和累加器中的数都当成无符号数,然后将两数相乘。
(2)工作特点:
- 源操作数可以是字或字节。
- 若源操作数是一个字节,则它与累加器AL相乘,乘积为16位数,高8位送到AH,低8位送到AL。
- 若源操作数是一个字,则它与累加器AX相乘,乘积为32位数,高位字送到DX,低位字送到AX。
(3)要求:
- 源操作数不能是立即数。
- 源操作数是存储单元时,必须在前加BYTE或WORD说明是字或字节。
② IMUL 整数乘法指令 (Integer Multiply)
IMUL
(1)功能:
(2)工作特点:
(3)要求:
③ AAM 乘法的ASCII调整指令 (ASCII Adjust for Multiply)
AAM
(1)功能:
(2)工作特点:
(3)要求:
4. 除法指令
① DIV 无符号数除法指令 (Division,unsigned)
DIV 源
(1)功能:对无符号二进制数进行除法操作。
(2)工作特点:
- 源操作数作为除数。
- 源操作数可以是寄存器或存储单元。
- 都为无符号数。
(3)要求:
- 若源操作数为字节,16位被除数在AX中;相除之后,8位商在AL中,余数在AH中。
- 若源操作数为字,32位被除数在DX,AX中,DX为高为字;相除之后,AX存16位商,DX存16位余数。
- 若被除数只有8位,则必须放在AL中,AH清零。
- 若被除数只有16位,除数也是16位,则被除数必须放在AX中,DX清零。
② IDIV 整数除法指令 (Integer Division)
IDIV
(1)功能:
(2)工作特点:
(3)要求:
③ CBW 把字节转换成字指令(Convert Byte to Word)
CBW
(1)功能:
(2)工作特点:
(3)要求:
④ CWD 把字转换成双字指令 (Convert Word to Double Word)
CWD
(1)功能:
(2)工作特点:
(3)要求:
⑤ AAD 除法的ASCII调整指令 (ASCII Adjust for Division)
AAD
(1)功能:
(2)工作特点:
(3)要求: