算术运算类指令包括以下四种指令
加法指令
减法指令
乘法指令
除法指令
1、加法指令
8086具有5条加法指令:
ADD 加法指令
ADC 带进位加法指令
INC 加1指令
AAA 加法ASCII调整指令
DAA 加法十进制调整指令
1.(1)无进位加法指令 ADD
指令格式: ADD dest,src;
功能:(dest)<-(dest)+(src)
src: 立即数,通用寄存器,存储器
dest:通用寄存器,存储器
例如:
ADD CL,10
ADD DX,SI
ADD AX,[2F00H]
ADD 100H[BX],AL
ADD [DI],30H
特点:
可进行8位或16位的无符号数或有符号数加法运算;
源操作数和目标操作数不能同时为存储器,不能为段寄存器
指令影响标志位:
8位(有符号)数相加,和超出范围(-128~127),或16位(有符号)数相加,和超出范围(-32768~+32767),则O=1.
8位(无符号)数相加,超过255,或16位(无符号)数相加,和超过65535,则C=1.
其他标志(S,A,P,Z)由运算结果按定义确定。
1.(2)带进位的加法指令 ADC(Add with carry)
格式:ADC dest,src
功能:(dest)<-(dest)+(src)+C
C:进位标志C的现行值(上条指令C值)
特点:与ADD同。
用途:主要用于多字节运算中。
类型举例:
ADC CX,300
ADC AL,BL
ADC DX,[SI]
如:求两个32位数12345678H与0ABCDEFABH之和
MOV AX,1234H
MOV BX,5678H
ADD BX,0EFABH
ADC AX,0ABCDH
1.(3)加1指令 INC
格式: INC dest;
功能: (dest)<-(dest)+1
dest:通用寄存器、存储器
用途:用于在循环程序中修改地址指针和循环次数。
标志位影响情况: 影响S,Z,A,P,O; 不影响C。
2、减法指令
8086有7条减法指令:
SUB 减法指令
SBB 进位减法指令
DEC 减1指令
NEG 求补指令
CMP 比较指令
AAS 减法ASCII调整指令
DAS 减法十进制调整指令
2.(1)减法指令 SUB
格式: SUB dest,src;
功能: (dest)<-(dest)-(src)
src: 立即数,通用寄存器,存储器
dest: 通用寄存器,存储器。
例如:
SUB AL,37H
SUB BX,DX
2.(2)带进位减法指令 SBB
格式: SBB dest,src;
功能: (dest)<-(dest)-src-C
src: 立即数,通用寄存器,存储器
dest: 通用寄存器,存储器
指令影响标志位
例如:
SBB BX,100H
SBB CX,DX
SBB WORD PTR 100H[BP],100
2.(3)减1指令 DEC
格式: DEC dest
功能: (dest)<-(dest)-1
dest: 通用寄存器、存储器。不能是段寄存器。
用途:用于在循环程序中修改地址指针和循环次数。
标志位影响情况: 影响S,Z,A,P,O; 不影响C。
2.(4)求补指令 NEG
格式: NEG dest ;
功能: (dest)<-0-(dest)
dest: 通用寄存器、存储器。
操作:把操作数按位求反后,末位+1
影响标志: A,C,O,P,S,Z。
C:操作数为0时求补,C=0;一般使C=1.
O:对-128 或 -32768求补,O=1;否则 O=0;
2.(5)比较指令 CMP
格式: CMP dest,src ;(dest)-(src)
结果不保留,只是用来影响标志位。
影响标志: A,C,O,P,S,Z.
src: 立即数,通用寄存器,存储器
dest: 通用寄存器,存储器
例如:
CMP AL,0AH 寄存器与立即数比较
CMP CX, DI 寄存器与寄存器比较
CMP AX,[1000H] 寄存器与存储器比较
CMP [BX+5],SI 存储器与寄存器比较
用途;
用比较指令来比较两个数之间的关系;
两者是否相等,两个数中哪个大。
(1)根据Z标志,判断两者是否相等;
(2)根据C标志,判断两个无符号数的大小;
(3)用S、O标志,判断两个带符号数的大小。
3、乘法指令
3.(1)无符号乘法 (MUL)
格式: MUL SRC
操作:
字节操作数:AX<-(AL)*(SRC)
字操作数:DX:AX<-(AX)*(SRC)
3.(2)带符号乘法 (IMUL)
格式:IMUL SRC
操作:同MUL,但操作数和乘积均带符号;
按有符号数的规则相乘;
4、除法指令
4.(1)无符号除法(DIV)
格式: DIV SRC
操作:
字节除数: AL<-(AX)/(SRC) 之商
AH<-(AX)/(SRC) 之余数
字除数 AX<-(DX:AX)/(SRC) 之商
DX<-(DX:AX)/(SRC) 之余数
4.(2)带符号除法 (IDIV)
格式: IDIV SRC
操作: 同DIV指令
商和余数是带符号的;商的符号符合一般代数符号规则,余数的符号与被除数相同。
4.(3)字节扩展指令 (CBW)
格式: CBW ;Convert Byte to Word
功能: 将AL字节扩展成字,符号位及高字节在AH中;
4.(4)字扩展指令 (CBD)
格式:
CBD ; CWord to Double Word
功能:AX扩展成双字,符号位及高字在DX中;
这两条指令的作用是对 被除数 AL 或 AX 进行扩展。
5、十进制调整指令