汇编语言
标志寄存器
1. ZF标志
- flag的第6位是ZF,零标志位。它记录相关指令执行后,其结果是否为0。
- 如果为0,那么ZF=1
- 不为0,那么ZF=0
例如:
mov ax,1
sub ax,1
结果不为0,zf显示NZ(not zero),结果为0,zf显示ZR(zero)
2. PF标志
- flag的第2位是PF,奇偶标志位。
- 其结果的所有bit为中1的个数是否为偶数
- 为偶数,pf=1,为奇数,pf=0
例如:
mov ax,0
add ax,1
add ax,1
add ax,1
当ax为1时(0001b),bit中1个1,则奇数个1,pf为po
当ax为3时(0011b),bit中2个1,则偶数个1,pf为pe
3. SF标志
- flag的第7位是SF,结果为负,SF=1;如果非负,SF=0
- 在我们将数据当做有符号数来运算的时候,可以通过它来得知结果的正负
- 如果我们将数据当做无符号数来运算,SF的值则没有意义
例如:
mov ax,0
add ax,1
sub ax,2
- 当结果为正数时,SF=0,显示PL(positive number)
- 当结果为负数时,SF=1,显示NG(negative number)
4. CF标志
- flag的第0位是CF,进位标志位
- 一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位相更高位的进位值,或从更高位的借位值
例如:
mov al,1
add al,1
add al,ff
- CF为CY(carry),表示进位
- CF为NC(not carry),表示没有进位
5. OF标志
- 在进行有符号数运算的时候,结果超过了机器所能表示的范围称为溢出
- 指令运算的结果用8位寄存器或内存单元来存放,对于8位的有符合数据,机器所能表示的范围就是-128~127
- 如果运算结果超出了机器所能表达的范围,将产生溢出
- OF为NV(not over flow),表示没有溢出
- OF为OV(over flow),表示溢出