014 無條件跳轉指令jmp

2021-07-22 15:51:55 字數 1815 閱讀 4632

l無條件跳轉指令

jmp

lgoto

指令

l

優化後的指令

l標誌暫存器

psw

1514

1312

111098

7654

3210

ofdf

iftf

sfzf

afpfcf零

標誌標誌暫存器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個標誌位

一、

goto

與jmp

無條件跳轉指令

格式: jmp  a

1. 其中a為轉移的目的位址。程式轉移到目的位址所指向的指令繼續往下執行。

// jz/je jnz/jne 都需要乙個條件,條件成立才跳轉,而jmp不需要。

2. 本組指令對標誌位無影響.

3、**測試

//goto jmp

printf("begin\n");

goto

end;

printf("do this");

end:

printf("end\n");

getchar();

二、優化後的指令

/0d 禁用優化

/01 最小化大小

/02 最大化速度

/0x 完全優化

轉移指令jmp和跳轉指令call

以下內容文字描述來自於 王爽老師的 組合語言 教材,建議大家都買一本,哈哈。不是我打廣告,確實人家寫的好,應該支援。我只是附上了自己的和理解而已。只修改ip,稱為段內轉移,如jmp ax 修改cs和ip,稱為段間轉移,如 jmp 1000 0 轉移指令分為 無條件轉移,如jmp 條件轉移 迴圈指令,...

條件跳轉指令 383

7.5 條件跳轉指令 383 2006 6 29 15 00 00 7.2 低階控制結構 378 7.3 語句標號 378 7.4 無條件控制轉移 jmp 380 7.6 中級 控制結構 jt和jf 386 7.7 使用組合語言實現通用控制結構 386 7.8 選擇 386 雖然jmp指令提供了控制...

11 Go 語言流程控制 goto 無條件跳轉

前面三種,我已經都講過了,今天要講講 goto 的無條件跳轉。很難想象在 go 居然會保留 goto,因為很多人不建議使用 goto,所以在一些程式語言中甚至直接取消了 goto。我感覺 go 既然保留,一定有人家的理由,只是我目前還沒感受到。不管怎樣,咱還是照常學習吧。goto顧言思義,是跳轉的意...