8086彙編 call 指令

2022-05-17 05:13:26 字數 957 閱讀 2260

字面意思:呼叫子程式

實質:流程轉移指令,它們都修改ip,或同時修改cs和ip

call指令實現轉移的方法和 jmp 指令的原理相似

格式:call 標號

返回指令:ret、retf

cpu執行call指令,進行兩步操作:

(1)將當前的 ip 或 cs和ip 壓入棧中;

(2)轉移到標號處執行指令。

call 標號:

cpu執行「call far ptr 標號」時的操作:

(1) (sp) = (sp) – 2

((ss) ×16+(sp)) = (cs)

(sp) = (sp) – 2

((ss) ×16+(sp)) = (ip)

(2) (cs) = 標號所在的段位址

(ip) = 標號所在的偏移位址

cpu執行「call near ptr 標號」時的操作:

「call 標號」類似」jmp near ptr 標號」,對應的機器指令中為相對於當前ip的轉移位移,而不是轉移的目的位址,實現段內轉移。指令「call far ptr 標號」實現的是段間轉移!

1、案例模板

說明:在程式走到call s時會直接跳轉到 s: add ax, 1 這裡列處理返回值ret以上指令當遇到ret後會返回到 mov ax, 4c00h 行接著往下執行。

mov ax, 0

;使用主程式 s

call

s

movax, 4c00h

int21h

;建立主程式s

s:add ax, 1;返回

ret

8086彙編 rep 指令

rep指令常和串傳送指令搭配使用 功能 根據cx的值,重複執行後面的指令 功能 以位元組為單位傳送 1 es 16 di ds 16 si 2 如果df 0則 si si 1 di di 1 如果df 1則 si si 1 di di 1 功能 以字為單位傳送 1 es 16 di ds 16 si...

8086彙編 Loop 指令

功能 實現迴圈 計數型迴圈 cpu 執行loop指令時要進行的操作 用cx和loop 指令相配合實現迴圈功能的三個要點 1 在cx中存放迴圈次數 2 用標號指定迴圈開始的位置 3 在標號和loop 指令的中間,寫上要迴圈執行的程式段 迴圈體 如果 cx 0,ip ip 8位位移 10op指令示例程式...

8086 彙編 jmp 指令

功能 修改cs ip的指令 可以通過改變cs ip中的內容,來控制cpu要執行的目標指令。背景 一般情況下指令是順序地逐條執行的,而在實際中,常需要改變程式的執行流程。轉移指令,短轉移 jmp short 標號 功能 ip ip 8位位移 原理 1 8位位移 標號 處的位址 jmp指令後的第乙個位元...