字面意思:呼叫子程式
實質:流程轉移指令,它們都修改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指令後的第乙個位元...