算术指令

1、加法

1、可用于 8/16 位计算。

2、INC 不影响 CF 标志。

3、影响标志:CF 进位、ZF 零、SF 负、OF 溢出。

ADD DST, SRC DST = DST + SRC
ADC DST, SRC DST = DST + SRC + CF 带进位
INC OPR OPR = OPR + 1

2、减法

DEC 不影响 CF 标志,其他同上。

SUB DST, SRC DST = DST - SRC
SBB DST, SRC DST = DST - SRC - CF 带进位
DEC OPR OPR = OPR - 1
NEG OPR 求补,OPR = -OPR + 1
CMP OPR1, OPR2 比较指令,执行减法但仅设置标志位

3、乘法

1、总是与 AL 或 AX 相乘。

2、与 AL 相乘时,结果位于 AX。

3、与 AX 相乘时,结果位于 DX、AX。

4、影响标志:高位为 0 则 OF=0、CF=0,否则全为 1,其他标志位无意义。

MUL SRC 无符号乘法
IMUL SRC 有符号乘法

4、除法

1、被除数总是 AX 或 DX、AX。

2、结果超过 8 位或 16 位时将产生除法溢出终止程序。

DIV 无符号除法
IDIV 有符号除法
CBW AL 扩展到 AX
CWD AX 扩展到 DX

调整指令

1、压缩 BCD 码调整

1、应在进行压缩 BCD 码加减运算后使用。

2、调整 AL,高四位为十位,低四位为个位。

DAA 加法十进制调整指令,OF 标志无定义,影响其他所有标志
DAS 减法十进制调整指令,OF 标志无定义,影响其他所有标志

2、非压缩 BCD 码调整

1、应在进行非压缩 BCD 码加减乘运算后使用,除法调整除外。

2、调整 AX,高 8 位为十位,低 8 位为个位。

AAA 加法 ASCII 调整指令
AAS 减法 ASCII 调整指令
AAM 乘法 ASCII 调整指令,仅将 AL 简单扩展到 AX
AAD 除法 ASCII 调整指令,将 AX 非压缩 BCD 码调整为二进制到 AL