016-JLE JNG(小于等于)
l? 條件轉移指令JLE
l? ?條件轉移指令JNG
?
l? 標志寄存器PSW
標志寄存器PSW(程序狀態字寄存器PSW)
?? 標志寄存器PSW是一個16為的寄存器。它反映了CPU運算的狀態特征并且存放某些控制標志。8086使用了16位中的9位,包括6個狀態標志位和3個控制標志位。
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| ? | ? | ? | ? | OF | DF | IF | TF | SF | ZF | ? | AF | ? | PF | ? | CF |
| ? | ? | ? | ? | ? | ? | ? | ? | ? | 零 標志 | ? | ? | ? | ? | ? | ? |
?
?
??????????????????
?
?
??
?? 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個標志位
?
一、指令格式
條件轉移指令JLE/JNG?
?格式: JLE/JNG 標號地址
?功能: 小于等于/不大于?時轉到標號地址
JNG??? 有符號 不大于???????? 則跳轉??? //Jump ifNot Greater
JLE??? 有符號小于等于?????? 則跳轉?? //Jumpif Less or Equal
??? SF=1,ZF=1,OF=1 //其中一個或者多個為1 則跳轉
二、代碼測試????
?? {
???????? printf("begin\n");
???????? int a=3;
???????? int b=5;
???????? if (a>b) //JLE/JNG 小于等于/不大于時轉移
???????? {
???????? ???????? printf("dothis");
???????? }
???? //JNG 不大于
???????? printf("end;\n");
???????? return0;
}
//OD?ctrl+* 設置下一條要執行指令的地址 簡單的說就是設置EIP
總結
以上是生活随笔為你收集整理的016-JLE JNG(小于等于)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于SYSTICK延时函数的两个小疑问
- 下一篇: ubuntu显示器分辨率不对_Ubunt