我最近開始嘗試學習如何在x86彙編中編程,並且我正在尋找一種資源來學習直接I/O(如使用「in」和「出「指示)。哪裏可以找到這些信息?x86彙編中直接輸入/輸出的資源
0
A
回答
1
這是一個非常寬泛的問題,難道不容易回答!
首先,您需要對硬件有一個直覺:邏輯網絡和總線如何工作。
第二與IA32E有兩個地址空間:
- 的IO地址空間(與
in
和out
訪問) - 的存儲器地址空間。
在開始的所有設備迴應上使用固定的標準地址(例如8042鍵盤和鼠標控制器上60H和64H響應)的IO地址空間。隨着Plug'n'Play技術(如PCI和後繼)的出現,地址變得可配置(並且需要注意新的地址空間,並且只有很少的設備(如PCI主控制器)保持其地址不變。
幾乎所有設備現在都可以重新映射,即使那些設備必須駐留在標準地址。作爲IO地址空間微小(64KiB + 4),現在的共同趨勢是使用內存映射io,即使用內存地址空間(與PCI Express類似)。
設備編程需要的是其數據表及其拓撲結構,即它如何連接到系統。所以你一般也需要你的主板的數據表或圖表。 對於高級IO編程會話,您可以嘗試使用XHCI(USB3.0)控制器。
不復雜,您可以從開始。
這很有趣,如果你有一個揚聲器,你可以發出聲音!
看看這個樣品assembly code。
另請參閱OS Dev上的此resource。
注意:不能直接訪問硬件上的現代操作系統。
推薦閱讀:
The art of assembly language。
Ralf Brown files。
IO Port on OS Wiki。
相關問題
- 1. x86 gcc彙編輸出幫助請
- 2. x86彙編關於產品輸出
- 3. x86彙編鍵盤輸入沒有INT
- 4. 在彙編x86中彙總數組。在輸入的索引
- 5. x86彙編中的sum函數 - 無輸出
- 6. 彙編嵌入式資源
- 7. gcc彙編輸出
- 8. 如何處理在彙編語言x86中輸入keydown事件?
- 9. 如何修復x86 turbo彙編語言的輸出
- 10. x86彙編直接寫入VGA簡單操作系統
- 11. 32位Linux x86彙編代碼和垃圾在輸出
- 12. 循環/輸入邏輯流問題(NASM x86彙編)
- 13. x86彙編,我的代碼出了什麼問題?輸入,算術,打印
- 14. 用於爲gcc生成x86彙編的資源
- 15. 什麼是一些好的x86彙編語言資源?
- 16. 瞭解GHC彙編輸出
- 17. ' - *'出現在彙編輸出中
- 18. 以彙編語言輸入
- 19. 彙編輸入驗證
- 20. 彙編中的輸出目錄結構
- 21. MIPS彙編中的輸入整數
- 22. 從C#彙編中導出嵌入式資源?
- 23. POPF x86彙編
- 24. 輸出從資源文件
- 25. ARM彙編語言uART0輸入輸出,我做錯了什麼。
- 26. 擴展內聯彙編:輸入和輸出
- 27. 直接鏈接到資產管道中的編譯資源?
- 28. 在x86彙編中寫入stderr
- 29. 在LLVM彙編代碼中輸入用戶輸入
- 30. 的直接輸入字段
像這樣的要求提供資源而沒有任何研究證據的問題往往是作爲題外話被封閉的。快速谷歌顯示有大量的材料在那裏,其中一個是以前的這個問題有一些好評的答案:http://stackoverflow.com/questions/3215878/what-are-in-out-instructions-in-x86 -used-for –
使用IN和OUT指令沒有太多要了解的內容。他們讀取和寫入給定端口的值。這個難點在於知道使用哪個端口以及給定設備的數值。每種設備都不同,差別很大。此外,目前大多數設備都使用內存映射I/O,並且不使用IN/OUT指令。另請注意,大多數操作系統都會阻止程序使用IN/OUT或任何其他方式直接與硬件進行交互。 –