子程序結構相當于高級語言中的調用過程。為便于模塊化程序設計,指令往往把程序中某些具有獨立功能的部分編寫成獨立的程序模塊,稱為子程序。
1 .子程序調用指令 CALL
(1)段內直接調用
格式: CALL DST
執行操作: PUSH (IP)
(IP)<-(IP)+D16
DST 給出轉向地址, D16 為機器指令中的位移量,是轉向地址和返回地址之間的差值。
(2) 段內間接調用
格式: CALL DST
執行操作: PUSH (IP)
(IP)<-(EA)
指令中的 DST 可使用寄存器尋址方式或任一種存儲器尋址方式,由指定的寄存器或存儲單元的內容給出轉向地址。
(3) 段間直接調用
格式: CALL DST
執行操作: PUSH (CS) PUSH (IP)
(CS)<-DST 指定段地址
(IP)<-DST 指定偏移地址
(4) 段間間接調用
格式: CALL DST
執行操作: PUSH (CS)
PUSH (IP)
(IP)<- ( EA )
(CS)<- ( EA+2 )
EA 是由 DST 的尋址方式確定的有效地址,可用任一種存儲器尋址方式來取得。
2 .返回指令 RET
(1)語句格式: RET ; (IP)<-POP()
(2)語句格式: RET EXP;
在完成出棧操作后,還要修改堆棧指針
作者:知識