簡介 :
主要理解函數調用的時候參數的傳遞問題 , 以及返回值如何保存
代碼 :
assume cs:code,ds:data,ss:stack
; 利用棧機制實現簡單的函數調用
data segment
data ends
stack segment
db 32 dup(0)
stack ends
code segment
start:
; 初始化數據段
mov ax, data
mov ds, ax
; 初始化棧段
mov ax, stack
mov ss, ax
mov sp, 32
; 參數壓棧
push word ptr 6 ; 參數 short int y = 6 壓棧
push word ptr 8 ; 參數 short int x = 8 壓棧
; 調用函數
call func_add
; 程序結束
jmp finish
; 函數功能 : 實現兩個整型數字相加
; 參數 : (short int x, short int y)
; 返回 : ax
func_add:
push bp
mov bp, sp
mov ax, ss:[bp + 4]
add ax, ss:[bp + 6]
pop bp
ret 4 ; 相當于 : pop ip, add sp, n ; 由于兩個參數 x , y 占 4 字節 , 因此 ret 4
finish:
mov ax,4CH
int 21H
code ends
end start
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。