我目前正在使用emu8086(所以我編程爲8086mP),但是由於它無法「理解」像int 21h/ah = 5bh和其他許多中斷,所以我很難與emu8086配合使用。我應該使用什麼彙編/ ide能夠使用其他中斷嗎?(Emu8086甚至不支持它應該的中斷,更不用說後面添加的中斷)哪個彙編程序支持大部分現有的中斷?
回答
有幾次我需要一個x86模擬器我使用this。
退房NGASM, 裁判:http://www.bestdiskrecovery.com/ngasm/index.html
我不知道我理解你所說的「支持中斷」的意思。如果問題是通過陷阱爲各種機器陷阱或操作系統調用提供所謂的操作碼,那麼最簡單的方法就是爲每個這樣的陷阱定義參數化宏,然後調用適當的宏。
因此「int21/ah = 5bh」可能表示操作系統調用「OutputCharacterAL」。你會定義一個宏:
OutputCharacterAL macro
mov ah,5bh
int21
mend
和
mov AL,"*"
OutputCharacterAL
調用它幾乎任何彙編器將讓你這樣做,所以沒有任何「最佳」。
我寧願爲這個定義一個運行時庫 – Powerslave
@Powerslave:你可以這樣做,以一個價格。陷阱的要點是在操作系統和應用程序之間提供隔離。如果你堅持使用子程序庫,這意味着每個「OS調用」在執行子程序調用之前都會有額外的開銷,然後執行陷阱,也就是說操作系統不與應用程序隔離。如果你定義了一個宏庫,你可以隨時使它產生一個運行時庫調用,用於那些操作系統開銷不重要的操作系統調用,並且子例程可以使用用戶空間的工作,操作系統方面覺得這樣做很尷尬。 –
那麼,每個操作系統都和RTL函數非常相似,如'fork()'或'HeapAlloc()'等等(除了這兩個是OS特定的)。其目的實際上是將應用程序與陷入內核的代碼存根分離開來。這提供了一個粗糙的解耦和一個漂亮的乾淨的API。陷阱的重點不在於與操作系統隔離(甚至更多地,您正在調用特定於操作系統的向量,因此您將與它緊密耦合),而是提供從userland調用特權代碼的方法。另外,除了陷入內核的開銷之外,子程序調用的成本可以忽略不計。 – Powerslave
- 1. 彙編程序中的分支表(Nasm)
- 2. 彙編語言程序中的部分
- 3. 彙編分支:程序計數器
- 4. 是否有哪個編譯器支持C++標準的哪一部分?
- 5. 哪個彙編程序要定位?
- 6. 彙編語言支持ASP.net
- 7. linux「as」彙編程序是否支持intel格式彙編語言?
- 8. 從哪個現有分支中,應創建新分支?
- 9. 彙編程序64b部門
- 10. 「彙編」與「彙編程序」
- 11. ARM彙編 - 分支指令
- 12. iTunes Connect應用程序與支持URL:哪一個是哪個?
- 13. 哪些彙編器當前支持AVX指令集?
- 14. Eclipse不支持哪些編程語言?
- 15. TestComplete支持哪些編程語言?
- 16. 如何判斷我的分支是基於哪個遠程「父」分支?
- 17. C++中的彙編程序
- 18. 彙編程序中的兩個堆棧?
- 19. 彙編程序修補比較結構和分支
- 20. 瞭解布爾彙編程序分支偏移量計算
- 21. 彙編程序
- 22. 第一個彙編程序
- 23. Rust編譯器支持中斷
- 24. VS2012支持__asm__ __volatile__彙編代碼
- 25. 如何判斷哪個本地分支與遠程分支過期
- 26. 我的代碼中哪部分不支持IE 6
- 27. 在8086彙編MASM中的分部
- 28. 哪個版本的xcode支持「Swift編程語言」?
- 29. 如何實現彙編程序
- 30. 部分逃脫彙編
中斷服務程序不是處理器的功能,也不是任何彙編程序。它們由BIOS和操作系統提供,地球上沒有任何彙編程序與它們有任何關係。另一方面,'int'助記符(翻譯爲'0CDh',除了'int 3'),幾乎所有東西都支持。總結一下,你的問題沒有意義。特別是當涉及到彙編器和仿真器之間的混淆時。對於'int 21h',安裝DOS – Powerslave