匯編語言 : 接近與高級語言的函數調用實例


簡介 :

主要理解函數調用的時候參數的傳遞問題 , 以及返回值如何保存

代碼 :

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容