加法指令执行后,影响的标志位都有哪些?为什么?

来源:百度知道 编辑:UC知道 时间:2024/07/02 06:40:53

加法运算指令

ADD(ADD)加法指令

ADD DST , SRC //Byte/Word

执行操作: dst=dst+src

1.两个存储器操作数不能通过ADD指令直接相加, 即DST 和SRC必须有一个是通用寄存器操作数.

2.段寄存器不能作为SRC 和DST.

3.影响标志位Auxiliary Crray Flag ,Carry Flag, Overflow Flag, Parity Flag, Sign Flag 和Zero Flag ,如下所示:

CF 根据最高有效位是否有进(借)位设置的:有进(借)位时CF=1, 无进(借)位时CF=0.
OF 根据操作数的符号及其变化来设置的:若两个操作数的符号相同,而结果的符号与之相反时OF=1, 否则为0.
ZF 根据结果来设置:不等于0时ZF=0, 等于0时ZF=1
SF 根据结果的最高位来设置:最高位为0, 则SF=0.
AF 根据相加时D3是否向D4进(借)位来设置:有进(借)位时AF=1, 无进(借)位时AF=0
PF 根据结果的1的个数时否为奇数来设置:1的个数为奇数时PF=0, 为偶数时PF=1

楼主把邮箱留下
我把那个CHM给你发过去
------------------------------------------------
这个没有为什么,某些指令之所以会影响标志位,是为了下一步以及以后指令的执行,比如判断两个数是否相等,如果相等跳转到标号e,可以用以下的指令;
假定这两个数一个在AX,一个在BX
CMP AX,BX;CMP指令和SUB指令影响的标志位完全一样(SUB影响的标志位和ADD一样),只不过不会保存结果
jz e;执行CMP AX,BX后ZF标志位位1,jz是条件跳转指令,ZF为1时跳转

加法指令:ADD dst, src
指令执行的操作: (dst) ← (src) + (dst)
带进位的加法指令: ADC dst, s