【学习笔记】汇编:关于几个标志位的注意点

在学习的时候发现标志位很容易搞的很乱,简直难受,特记下来这其中的注意事项

所有标志位的注意点:

1、所有的标志位只有在运算的时候才会发生改变,即MOV PUSH POP等移动指令都不影响标志位

2、所有标志位的改变都是根据运算的位数来计算的,使用8位寄存器时只看8位寄存器结果,使用16位寄存器时只看16位寄存器结果

CF Carry Flag 进位标志符,这个是最简单的:

1、CF是进行无符号数运算,即00H ADD 80H会被当作 0+128

2、CF只要在运算时发生进位,即FF加到00或者 00减到FF都会使CF为1

3、CF为1时显示为CY(Carry Yes)为0时显示为NC(Not Carry)

SF Sign Flag 符合标志符

1、符号标志符把运算结果作符号数运算,把7FH看作 127 把 80H看作 -128

2、SF只要二进制的首位为1,则为1,首位为0则为0

3、SF为1时显示为NG(Negative),为0时显示为PL(Postive)

ZF Zero Flag标志位

1、ZF不分是符号数还是无符号数

2、ZF只要计算结果为0,就为1

3、ZF为1时显示为ZR(Zero),为0时显示为NZ(Not Zero)

PF Parity Flag 奇偶标志位

1、PF并不是计算数学意义上的奇偶性,如08H并不能看作是偶数

2、PF是计算二进制中1的个数的奇偶性,如08H的二进制为 0000 1000B,1的个数为1,所以为奇数,PF为0

3、PF为1时(偶数)显示为PE(Parity Even),PF为0时(奇数)显示为PO(Parity ODD)

OF OverFlow Flag 溢出标志位 (尤其注意)

1、OF判断的是符号数的计算,注意 80H ADD 80H时并不是从80H加到0而是 -127 - 127 结果溢出

2、OF只要从正数加到负数,或者是负数减到正数时就为1,其余结果为0

3、OF为1时显示为OV(OverFlow),OF为0时,显示为NV(Not OverFlow)

猜你喜欢

转载自blog.csdn.net/h2809871142/article/details/79378861
今日推荐