天天看点

汇编语言学习之标志寄存器

ZF标志

  • 零标志位,它记录相关指令执行后,其结果是否为0.如果结果为0,那么zf=1,反之,则zf=0.
  • 影响zf标志的大都是运算指令。

PF标志

  • 奇偶标志位,它记录相关指令执行后,其结果的所有bit位中1的个数是否位偶数。如果1的个数为偶数,pf=1,如果为奇数,那么pf=0.

SF标志

  • 符号标志位,它记录相关指令执行后 ,其结果是否为负。如果结果为负,sf=1;如果非负,sf=0.

CF标志

  • 进位标志位,一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值。

OF标志

  • 在进行有符号数运算的时候,如果超过了机器所能表示的范围称为溢出。

adc指令

  • adc是带进位加法指令,它利用了CF位上记录的进位值。

指令格式:adc 操作对象1,操作对象2:

功能:操作对象1 = 操作对象1 + 操作对象2 + CF

sbb指令

  • sbb是带借位减法指令,它利用了CF位上记录的借位值。

指令格式:sbb 操作对象1,操作对象2:

功能:操作对象1 = 操作对象1 - 操作对象2 - CF

cmp指令

  • cmp是比较指令,cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。

cmp指令格式:cmp 操作对象1,操作对象2:

功能:计算 操作对象1 - 操作对象2 但并不保存结果

DF标志和串传送指令

  • 方向标志位,在串处理指令中,控制每次操作后si、di的增减。
  • df=0–每次操作后si、di递增;
  • df=1–每次操作后si、di递减。

串传送指令:movsb

功能:1、((es)*16+(di)) = ((ds)*16+(si))

2、如果df=0则:(si)=(si)+1 (di) = (di)+1

3、如果df=0则:(si)=(si)-1 (di) = (di)-1

pushf 和 popf

  • pushf的功能是将标志寄存器的值压栈;popf的功能是从栈中弹出数据,送入标志寄存器中。

继续阅读