文档介绍:第五章算术逻辑运算程序
1、ADD指令(字节或字相加)
格式:ADD 目的操作数,源操作数
功能:将目的操作数加上源操作数,
和送至目的操作数。
注意: 目:寄存器、存储器操作数。
源: 寄存器、存储器操作数和立即数。
二者类型要一致,即同时为字,或同时
为字节。但不能同时为存储器操作数。
影响状态标志:AF、CF、OF、PF、SF、ZF
1)寄存器----寄存器
例: ADD AX ,BX ;(AX)+(BX)=>AX
ADD CX, DX
ADD BX,DI
2)存储器----寄存器
例: ADD CX, A ;A用DW定义
ADD AX,BETA[SI] ;BETA用DW定义
ADD BX,[BX][SI]
3)寄存器----存储器
例: ADD A,CX ;A用DW定义
ADD BETA[SI],AX
4)立即数累加到寄存器/存储器
例:ADD AL,3
ADD AX,356
ADD CX,100
ADD BETA[SI],34
状态标志位:
ZF:当运算结果为0时,置1。
SF:结果为负时,置1。
CF: 执行加法指令时,CF是根据最高有效位是否有
向高位进位设置的。有进位时CF置1
OF: 据操作数的符号及其变化情况来定,若两操作
数符号相同而结果符号与之相反时,OF=1。
也既是如果结果溢出,则OF置1。
ADD DX, 0F0F0H
(DX)=4652H
则: 0100 0110 0101 0010
+ 1111 0000 1111 0000
1 0011 0111 0100 0010
(DX)=3742H,
ZF=0,SF=0,CF=1,OF=0
OF OV/NV 1/0 有/无
DF DN/UP 减/增
IF EI/DI 开/关
SF NG/PL 负/正
ZF ZR/NZ 0/非0
AF AC/NA 有/无
PF PE/PO 偶/奇
CF CY/NC 有/无
格式:同ADD
功能:源操作数加目的操作数再加进位标志CF的和
送至目的操作数。
即:如果进位标志位被置位则两个操作数相加的
结果在存入目的操作数之前再加1,否则,再加0。
影响状态标志位:AF,CF,OF,PF,SF,ZF。
ADD和ADC指令既适用于无符号二进制数也适用
于有符号的。但它们的两个操作数必须同时为字
节(8位)或字(16位)。
2、ADC指令(带进位的加法指令) add with carry
3、INC指令(字节或字加1) increment
格式:INC 目的操作数
功能:目的操作数加1后送至目的操作数。
例:INC CX
INC A ;A为变量名
INC WORD PTR[SI] ;注意INC [SI]是错的。
注意:目的操作数可以为通用寄存器,也可以存储器,
但不能是立即数。本指令主要用在循环程序中
修改地址指针和循环次数等。指令执行结果影
响AF,OF,PF,SF,ZF。但不影响CF 。
4、SUB指令(字节或字相减) subtract
格式:SUB 目的操作数,源操作数
功能:目的操作数减源操作数,结果送目的操作数。
影响状态标志位:AF,CF,OF,PF,SF,ZF。
5、SBB指令(带借位的减法指令) subtract with borrow
格式:SBB 目的操作数,源操作数
功能:目的操作数减源操作数,再减去进位标志CF的值,
结果送目的操作数。影响AF,CF,OF,PF,SF,ZF.
本指令主要用于多字节操作数相减。在行减法运算
时(SUB或SBB)若有高位的借位就置CF为1;
例:MOV AL,64H
MOV BL,03H
SBB AL,BL ;AL-BL-CF=>AL,若CF=1,
则AL结果为60H
6、DEC指令(字节或字相减) decrement
格式:DEC 目的操作数
功能:将目的操作数的值减1,在将结果送回目的操作数。
注意:操作数不能是立即数,在相减时把操作数作为一个
无符号二进制数来对待。影响:AF,OF,PF,SF,ZF,
但不影响CF。
7、NEG指令(求补) negate
格式:NEG 目的操作数
功能:使目的操作数的符号变反, 即0减去目的操作数
后送目的操作数,例+1变为-1。
影响AF,CF,OF,PF,SF,ZF。但注意若操作数为0,
指令执行后CF置0,否则置 1。