- 状态标志
状态标志一方面作为加减运算和逻辑运算等指令的辅助结果, 另一方面又用于构成各种条件, 实现程序分支, 是汇编语言编程中一个非常重要的方面。
- 进位标志CF(Carry Flag)
(针对无符号整数)
处理器设计的进 (借) 位标志类似于十进制数据加减运算中的进位和借位,只不过是体现二进制数据最高位的进位或借位。 具体来说, 当加减运算结果的最高有效位有进位 (加法) 或借位 (减法) 时, 将设置进位标志为 1, 即CF=1; 如果没有进位或借位, 则设置进位标志为0,即CF=0. 换句话说, 加减运算后, 如果CF=1, 说明数据运算过程中出现了进位或借位; 如果CF=0, 说明没有进位或借位。
例如,有两个8位二进制数:00111010和01111100。如果将它们相加,运算结果是10110110。 运算过程中, 最高位没有向上再进位, 所以这个运算结果将使得CF=0。 但如果是0101010和01111100相加,结果是[1]00100110,出现了向高位进位(用中括号表示),所以这个运算结果将使得CF=1。
进位标志是针对无符号整数运算设计的, 用于反映无符号数据加减运算结果是否超出范围、是否需要利用进 (借) 位反映正确结果. N位二进制数表达无符号整数的范围是0-2"-1。 如果相应位数的加减运算结果超出了其能够表达的范围,就是产生丁进位或借位。
将上面例子中的二进制数据00111010+01111100=10110110转换成十进制表达是:58+124=182运算结果182仍在0~255范围之内,没有产生进位,所以CF-0。将二进制数据10101010+01111100=[1]00100110转换成十进制表达是:170+124=294=256+38 运算结果294超出了0~255范围, 所以将使得CF-1. 这里, 进位CF=1 表达了十进制数据256。
- 溢出标志OF(Overflow Flag)