八 彙編 轉移指令的原理

2021-09-27 12:49:04 字數 1134 閱讀 8039

可以修改ip,或者同時修改cs和ip的指令統稱為轉移指令。或者說轉移指令就是可以控制cpu執行記憶體中某處**的指令。

8086cpu 轉移行為可以有以下幾類

8086cpu的轉移指令分為

a. 取得標號的偏移位址。

a. jmp 無條件轉移指令,可以只修改ip,也可以同時修改 cs 和ip。

a. jmp short 標號**移到標號處執行指令)

這種格式是段內轉移,對ip的修改範圍是-128-127.

注意:cpu在執行jmp 指令的時候並不需要轉移的目的位址。

b . 轉移指令並沒有告訴cpu 要轉移的目的位址,卻告訴了cpu要轉移的位移,通過與當前的偏移位址來確定要轉移的目的位址。所以在jmp short 標號 指令對應的機器碼中並不需要飽含轉移的目的位址,而包含的是轉移的位移。

c. 這裡所說的位移,就是編譯器根據彙編指令中的標號來計算出來的。

下圖為轉移及演算法方法示例圖

d.jmp near ptr 標號,該指令格式實現的是段內轉移。範圍為 -32768-32767

a. amp far ptr 標號,該指令實現的是段間轉移,又稱為遠轉移。

指令格式 jmp 16位 reg

功能: (ip)= (16位reg)

a. 轉移位址在記憶體中的 jmp 指令有兩種格式

jmp dword ptr 記憶體單元位址(段間轉移):功能上從記憶體單元位址處存放著兩個字,高位址處的字是轉移的目的段位址,低位址處的是轉移的偏移位址。(cs= 記憶體單元位址+2, ip = 記憶體單元位址)

a. loop 指令為迴圈指令,所有的迴圈指令都是短指令,對應的機器碼中飽含轉移的位移,而不是目的位址。對ip的修改範圍為 -128-127。

a.如果是以目的位址,如果目的位址處的對應指令不存在,程式的執行就會出錯。而通過位移進行轉移就不存在這個問題了,因為無論對應指令的實際位址是多少,loop指令的轉移位移都不會變。(避免寫死位址,而寫死的目的位址不是對應的指令)

a. 根據位移進行轉移的指令,它們的轉移範圍受到了轉移位移的限制。如果在源程式中轉移範圍的超界的問題,在編譯的時候,編譯器就會報錯。

b. 編譯器有超界的校驗機制。

彙編轉移指令jmp原理

在計算機中儲存的都是二進位制數,計算機將記憶體中的某些數當做 某些數當做資料。在根本上,將cs,ip暫存器所指向的記憶體當做 指令轉移就是修改cs,ip暫存器的指向,彙編中提供了一種修改它們的指令 jmp。jmp指令可以修改ip或cs和ip的值來實現指令轉移,指令格式為 jmp 標號 將指令轉移到標...

組合語言 轉移指令的原理

可以修改ip,或同時修改cs和ip的指令統稱為轉移指令。轉移指令就是可以控制cpu執行記憶體中某處 的指令。8086cpu的轉移行為有以下幾類 由於轉移指令對ip的修改範圍不同,段內轉移又分為 短轉移和近轉移 8086cpu的轉移指令分為下面幾類 這些轉移指令轉移的前提條件可能不同,但是原理是相同的...

組合語言 轉移指令的原理

可以修改ip,或同時修改cs和ip的指令統稱為轉移指令。概括地講,轉移指令就是可以控制cpu執行記憶體中某處 的指令。8086cpu的轉移行為有以下幾類。只修改ip時,稱為段內轉移,比如 jmp ax。同時修改cs和ip時,稱為段間轉移,比如 jmp 1000 0。由於轉移指令對ip的修改範圍不同,...