標志寄存器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;
