通过汇编指令影响标志寄存器位

筅森魡賤 提交于 2020-01-16 03:27:45

 

1、进位标志CF(Carry Flag):如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

2、奇偶标志PF(Parity Flag):奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。

     如果最低有效字节“1”的个数为偶数,则PF的值为1,否则其值为0。

3、辅助进位标志AF(Auxiliary Carry Flag):

在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:

       (1)、在字操作时,发生低字节向高字节进位或借位时;

       (2)、在字节操作时,发生低4位向高4位进位或借位时。

 4、零标志ZF(Zero Flag):零标志ZF用来反映运算结果是否为0。

 如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

5、符号标志SF(Sign Flag):符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。

如果最高位为1,则SF为1,否则为0

6、溢出标志OF(Overflow Flag):溢出标志OF用于反映有符号数加减运算所得结果是否溢出。

如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

OF与CF的区别在于,

OF表示有符号数运算结果是否超出范围

CF表示无符号为运算结果是否超出范围

溢出主要是给有符号运算使用的,在有符号的运算中,有如下的规律:

正 + 正 = 正 如果结果是负数,则说明有溢出

负 + 负 = 负 如果结果是正数,则说明有溢出

正 + 负 永远都不会有溢出.

 

无符号数 :0-FF

有符号数:

正数:0-7F

负数80-FF

1、无符号、有符号都不溢出

MOV AL,8

ADD AL,8

2、无符号溢出、有符号不溢出

MOV AL,0FF

ADD AL,2

3、无符号不溢出、有符号溢出

MOV AL,7F

ADD AL,2

4、无符号、有符号都溢出

MOV AL,0FE

ADD AL,80

 

 

写汇编指令只影响CF位的值(不能影响其他标志位)

 mov al,0x1
 add al,0x2

写汇编指令只影响PF位的值(不能影响其他标志位)

mov al,0x1
add al,0x2

写汇编指令只影响AF位的值(不能影响其他标志位)

mov al,0xF
add al,0x1

写汇编指令只影响SF位的值(不能影响其他标志位)

mov al,0x80
add al,0x3

写汇编指令只影响OF位的值(不能影响其他标志位)

mov al,0x80
 sub al,0x10

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!