匯編 OD 標志位 置位相關指令


知識點:

標志位 置位相關指令

 

標志寄存器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(進位標志位):當執行一個加法(減法)運算時,最高位產生進位(或借位)時,CF1,否則為0    ZF零標志:若當前的運算結果為零,則ZF1,否則為0    SF符號標志位:該標志位與運算結果的最高位相同。即運算結果為負,則SF1,否則為0。    OF溢出標志位:若運算結果超出機器能夠表示的范圍稱為溢出,此時OF1,否則為0。判斷是否溢出的方法是:進行二進制運算時,最高位的進位值與次高位的進位值進行異或運算,若運算結果為1則表示溢出OF=1,否則OF=0    PF奇偶標志:當運算結果的最低16位中含1的個數為偶數則PF=1否則PF=0    AF輔助進位標志:一個加法(減法)運算結果的低4位向高4位有進位(或借位)時則AF=1否則AF=0  

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

 

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

JMP                        //014

JE/JZ     //=                //012 Jump if Equl 

JNE/JNZ  //=              //013

//帶符號數條件轉移指令

JL /JNGE  //>=  //小於  <   //015

JLE/JNG  //>   //小於等於<=  //016

JG/JNLE  //<=  //大於     >//017

JGE/JNL  //<   //大於等於>=  //017

Jump     跳轉/轉移

Not      

Equal    相等

Zero    零

Less    小於

Greater 大於

一、條件轉移指令(cmp)

助憶符

檢測的轉移條件

功能描述

 

SETE/SETZ

ZF=1

Jump Equal    == 

Jump Zero                

SETNE/SETNZ

ZF=0

Jump Not Equal != 

Jump Not Zero             

SETG/SETNLE

ZF=0&&SF=OF

Jump Greater   >

Jump Not Less or Equal    

SETGE/SETNL

SF=OF

Jump Greater Equal >=

Jump Not Less              

SETL/SETNGE

SF!=OF

Jump Less   <

Jump Not Greater or Equal  

SETLE/SETNG

ZF=1 || SF!=OF

Jump Less or Equal  <=

Jump Not Greater           

 

 

條件置位指令

通用寫法:SETxx reg8/mem8

作用:若條件xx成立,則dest=1,否則,dest=0

SETxx有很多種命令形式,這里的xx只是一個描述符,具體的參見下面的三個表,其中,EEqual)表示相等,GGreatet)表示帶符號大於,LLess)表示帶符號小於,AAbove)表示無符號大於,BBelow)表示無符號小於。

 

表一:用於帶符號數比較的SETxx指令,這些指令常用在CMP指令之后,以判斷帶符號數的大小

SETxx指令

描述

1條件

SETG,SETNLE//jg/jnle

大於(不小於等於)時置1

SF=OFZF=0

SETGE,SETNL

大於等於(不小於)時置1

SF=OF

SETL,SETNGE

小於(不大於等於)時置1

SF≠OF

SETLE,SETNG

小於等於(不大於)時置1

SF≠OFZF=1

 

 

表二:用於無符號數比較的SETxx指令,常用在CMP指令之后,用來判斷無符號數的大小

SETxx指令

描述

1條件

SETA,SETNBE

大於(不小於等於)時置1

CF=0ZF=0

SETAE,SETNB,SETNC

大於等於(不小於)時置1

CF=0

SETB,SETNAE,SETC

小於(不大於等於)時置1

CF=1

SETBE,SETNA

小於等於(不大於)時置1

CF=1ZF=1

 

表三:測試單個標志位的SETxx指令:

SETxx指令

描述

1條件

SETC,SETB,SETNAE

有進位時置1

CF=1

SETNC,SETNB,SETAE

無進位時置1

CF=0

SETZ,SETE

0(相等)時置1

ZF=1

SETNA,SETNE

0(不等)時置1

ZF=0

SETS

為負時置1

SF=1

SETNS

為正時置1

SF=0

SETO

溢出時置1

OF=1

SETNO

不溢出時置1

OF=0

SETP,SETPE

‘1’的個數為偶數時置1

PF=1

SETNP,SETPO

‘1’的個數為奇數時置1

PF=0

 


免責聲明!

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



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