簡介 :
主要理解函數調用的時候參數的傳遞問題 , 以及返回值如何保存
代碼 :
assume cs:code,ds:data,ss:stack
; 利用棧機制實現(xiàn)簡單的函數調用
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
; 函數功能 : 實現(xiàn)兩個整型數字相加
; 參數 : (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 字節(jié) , 因此 ret 4
finish:
mov ax,4CH
int 21H
code ends
end start
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者