彙編EXTERN用法

2021-06-20 08:12:38 字數 943 閱讀 4841

extern在彙編中用來引用乙個在其他模組中定義過的符號名,使得這個符號名所表示的資料或函式能在該模組中被使用。

[file "naskfunc.nas"]	 

global _asm_inthandler21

extern _inthandler21

[section .text]

_asm_inthandler21:

push es

push ds

pushad

mov eax,esp

push eax

mov ax,ss

mov ds,ax

mov es,ax

call _inthandler21

pop eax

popad

pop ds

pop es

iretd

void inthandler21(int *esp)

}

inthandler21函式在bootpack.h中宣告過,這裡在彙編檔案naskfunc.nask中要用到這個函式,故用extern語句。這裡我們有幾個疑問一塊來**一下:

*上面的call _inthandler21是怎樣乙個呼叫?

先將當前的ip壓入棧中,再跳到_inthandler21處執行指令。

*但一般是跳到某個彙編段,而這裡是乙個c原始檔中的函式,這有是什麼原理?

首先,匯程式設計序可以呼叫c函式,這是混合程式設計。而且還可以引用c檔案中定義的變數,如 c: char ch; asm: extern ch:byte。

在我們的這個例子中,函式inthandler21帶有引數,如何在彙編中傳參。方法是匯程式設計序將引數值壓入堆疊

mov		eax,esp

push eax

彙編EXTERN用法

extern在彙編中用來引用乙個在其他模組中定義過的符號名,使得這個符號名所表示的資料或函式能在該模組中被使用。file naskfunc.nas global asm inthandler21 extern inthandler21 section text asm inthandler21 pu...

extern用法詳解

1 基本解釋 extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告...

extern用法詳解

extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告 extern...