標志寄存器PSW和匯編條件轉移指令解釋


標志寄存器PSW

標志寄存器PSW(程序狀態字寄存器PSW)
   標志寄存器PSW是一個16為的寄存器。它反映了CPU運算的狀態特征並且存放某些控制標志。8086使用了16位中的9位,包括6個狀態標志位和3個控制標志位。

CF(進位標志位):當執行一個加法(減法)運算時,最高位產生進位(或借位)時,CF為1,否則為0。
ZF零標志位:若當前的運算結果為零,則ZF為1,否則為0。
SF符號標志位:該標志位與運算結果的最高位相同。即運算結果為負,則SF為1,否則為0。
OF溢出標志位:若運算結果超出機器能夠表示的范圍稱為溢出,此時OF為1,否則為0。判斷是否溢出的方法是:進行二進制運算時,最高位的進位值與次高位的進位值進行異或運算,若運算結果為1則表示溢出OF=1,否則OF=0

PF奇偶標志:當運算結果的最低16位中含1的個數為偶數則PF=1否則PF=0
AF輔助進位標志:一個加法(減法)運算結果的低4位向高4位有進位(或借位)時則AF=1否則AF=0  

   另外還有三個控制標志位用來控制CPU的操作,可以由程序進行置位和復位。
TF跟蹤標志:該標志位為方面程序調試而設置。若TF=1,8086/8088CPU處於單步工作方式,即在每條指令執行結束后,產生中斷。
IF中斷標志位:該標志位用來控制CPU是否響應可屏蔽中斷。若IF=1則允許中斷,否則禁止中斷。
DF方向標志:該標志位用來控制串處理指令的處理方向。若DF=1則串處理過程中地址自動遞減,否則自動遞增。

OD里能查看到 除IF標志外的 8個標志位

匯編條件轉移指令解釋

可以通過以下程序理解上述有符號條件轉移指令

void main(){
int a=3,b=5;
    if (a!=b) //je
        if (a==b) //jnz
            if (a<=b) //jg
                if (a<b) //jge
                    if (a>=b) //jl
                        if (a>b)//jle
                        {
                            printf("do if");
                        }
}
return 0;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM