内容更新是由低向高递增的
内容如下:
xor rax, rax #xor rax,rax是对rax的清零运算操作
条件跳转(一般配合cmp使用)
下表展示了基于零标志位、进位标志位、溢出标志位、奇偶标志位和符号标志位的跳转。


此表为1) 相等性的比较
- 无符号数比较
基于无符号数比较的跳转如下表所示。操作数的名称反映了表达式里操作数的顺序(比如 leftOp < rightOp)。下表里的跳转仅在比较无符号数值时才有意义。有符号操作数使用不同的跳转指令。

- 有符号数比较
下表列岀了基于有符号数比较的跳转。下面的指令序列展示了两个有符号数值的比较:

一、运算结果标志位
1、进位标志CF(Carry Flag)
进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。
2、奇偶标志PF(Parity Flag)
奇偶标志PF用于反映运算结果里“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。
利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程里,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。
3、辅助进位标志AF(Auxiliary Carry Flag)
在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:
(1)、在字操作时,发生低字节向高字节进位或借位时;
(2)、在字节操作时,发生低4位向高4位进位或借位时。
对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。
4、零标志ZF(Zero Flag)
零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。
5、符号标志SF(Sign Flag)
符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统里,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。
6、溢出标志OF(Overflow Flag)
溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
二、状态控制标志位
状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能令之发生改变。
1、追踪标志TF(Trap Flag)
当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步停断请求。这类方式主要用于程序的调试。
指令系统里没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。
2、停断允许标志IF(Inter

本文详细介绍了x86架构中CPU的标志位,包括进位、奇偶、辅助进位、零、符号和溢出标志,以及如何影响条件跳转。此外,还讲解了如CLC、STC、CMC等标志位操作指令,以及汇编语言中的PUSH、POP、CALL、RET等控制流程指令。内容涵盖无符号和有符号数的比较,以及通用寄存器和段寄存器的作用。此外,还提及了乘法、除法、移位、比较和逻辑运算等算术指令的使用。
最低0.47元/天 解锁文章
1384

被折叠的 条评论
为什么被折叠?



