ADD,是Intel x86平台的汇编加法指令,MEM代指操作数为内存或寄存器,REG代指操作数为寄存器,IMM代指立即数,SEG代指操作数为段寄存器。
形式和示例如下;
ADD MEM8,REG8 ADD DS:[BX+SI],AL
ADD MEM16,REG16 ADD BP,BX
ADD REG8,MEM8 ADD CH,DS:[0E8B]
ADD REG16,MEM16 ADD BP,BX
ADD AL,IMM8 ADD AL,12
ADD AX,IMM16 ADD AX,1234
ADD MEM8,IMM8 ADD BYTE DS:[BX+SI],12
ADD MEM16,IMM16 ADD WORD DS:[1234],5678
ADD MEM8,IMM8 ADD CL,12
ADD MEM16,IMM8 (有符号) ADD WORD DS:[BX+SI],-02 | ADD SP,+0A
我记不清有没有单独写过一篇add指令的博文;再学习一下;
我也记不住影响的标志位;
加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响,以上标志也称为结果标志,或者叫状态标志。
CF:进位标志,加法时最高位出现进位或减法时最高位出现借位,该位为1.
PF:奇偶标志,当运算结果的低8位中1的个数是偶数时,该位为1.
AF:半进位标志,作字节加法时,若低4位有向高4位的进位,或减法时,低4位有向高4位的借位,该位为1.
ZF:零标志,运算结果是0,该位为1.
SF:符号标志,运算结果最高位为1该位是1.
OF:溢出标志,有溢出,该位是1.
下面看一个例子;
两加数符号位都为0,结果符号位变为1,OF = 1;
结果最高位为1,SF = 1;
结果不为0,ZF = 0;
第4位3与7相加时未向高位进位,辅助进位标志 AF = 0;
结果(低8位)为1011 1010共5个1,PF = 0;
相加结果未发生进位,CF = 0;