天天看點

彙編語言學習之标志寄存器

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的功能是從棧中彈出資料,送入标志寄存器中。

繼續閱讀