我在網上搜索,但我無法找到int和呼叫asm之間的任何區別。 call和int asm指令有什麼區別?INT與Asm指令上的呼叫
它們都調用一些函數 「int」調用系統函數 「調用」調用用戶函數。
但在實模式下它們是否一樣? 我無法理解這種差異。
而且,int調用在bios上定義的ivt(中斷向量表)嗎? 但是call也可以做同樣的操作嗎?爲什麼需要呼叫或劃分兩者?
我在網上搜索,但我無法找到int和呼叫asm之間的任何區別。 call和int asm指令有什麼區別?INT與Asm指令上的呼叫
它們都調用一些函數 「int」調用系統函數 「調用」調用用戶函數。
但在實模式下它們是否一樣? 我無法理解這種差異。
而且,int調用在bios上定義的ivt(中斷向量表)嗎? 但是call也可以做同樣的操作嗎?爲什麼需要呼叫或劃分兩者?
表面上看,所不同的是:
CALL取程序地址,其可以是或近或遠,並提供或者作爲恆定或在寄存器中。同時,INT採用一箇中斷號,在0000:0000(實模式)的中斷向量表中用作索引來查找地址。 CALL將返回地址(近或遠)推入堆棧; INT推入標誌並返回地址(總是很遠)。
在保護模式下,INT是非常非常不同的。
INT用於消耗BIOS和DOS的服務。 CALL是用於調用你自己的程序。你可以在你的一個程序中創建一箇中斷向量點,但是重點是什麼?
爲了進一步閱讀,你會推薦其他來源,然後在我的答案中提到的那些?與Vlad Pirogov的「The Assembly Programming Master Book」類似嗎? **你在哪裏學習答案? – xmojmr 2014-10-19 06:38:38
已經有一段時間了,我不記得了。可能是Jourdain的書。 – 2014-10-19 20:03:26
我在網上搜索,但我無法找到int和呼籲asm之間的任何區別。 call和int asm指令有什麼區別?
綜合答案會很長,簡短的意見爲基礎的答案是不夠的。因此,我將只回答了
我搜索了網絡,但我不能找到任何..
在您的網頁搜索偏好可靠和專業的信息來源,你會發現你是什麼之後。
我建議你開始Wikipedia: INT (x86 instruction),看了也與和「又見」的文章(當然Wikipedia: Interrupt descriptor table和Wikipedia: System call,其他關鍵條款可能是call gate
和interrupt gate
...),並與外部引用結識。
其中最重要的參考就是第六章→程序調用以及中斷的Intel® 64 and IA-32 Architectures Software Developer Manuals和異常應該回答你想知道
通常,您沒有權限訪問中斷代碼所在的內存。您只能導致中斷,這將更改特權級別(包括從用戶空間到系統空間的內存映射)。 – turboscrew 2014-10-19 23:03:41
BIOS中斷調用可以通過只知道中斷/功能號作出一切 - 您不需要知道的實際地址。這是一個抽象,就像函數名一樣。 – 2014-10-19 01:19:54