我正在嘗試爲彙編中的引導加載程序做一個hello world。 我正在關注本教程: http://www.osdever.net/tutorials/view/hello-world-boot-loaderHello World引導加載程序
我搜索了一下,似乎有人說gcc不能編譯程序集。於是我搜索並找到了平面組裝者。當我嘗試編譯示例時,它在第一行[BITS 16]中給我一個錯誤。基本上它說'非法指令'。
此代碼需要什麼類型的彙編程序?
我正在嘗試爲彙編中的引導加載程序做一個hello world。 我正在關注本教程: http://www.osdever.net/tutorials/view/hello-world-boot-loaderHello World引導加載程序
我搜索了一下,似乎有人說gcc不能編譯程序集。於是我搜索並找到了平面組裝者。當我嘗試編譯示例時,它在第一行[BITS 16]中給我一個錯誤。基本上它說'非法指令'。
此代碼需要什麼類型的彙編程序?
我不知道GCC中的某個工具是否可以編譯彙編程序(如果是,它是否可以編譯爲16位代碼),但是您提到的站點建議使用NASM。你用NASM試過了嗎?
我只是評論了這條線,它在FASM中工作。看起來FASM自動默認爲16位。編譯完成後,它會以相同的名稱生成一個BIN文件。我將它重命名爲IMG擴展,然後使用VirtualBox將其分配爲軟盤映像以對其進行測試。工作很好,開機。
只要你寫這個BIN/IMG文件到驅動器上的第一個扇區它似乎工作正常。我也使用了上述網站上的教程。
是的,我沒有看到,現在我不知道如何使用它。 – user1314075
我從來沒有用過nasm。但man nasm告訴我,它只是根據輸入(彙編程序)文件生成一個目標文件。語法看起來是「nasm -o objectfile assemblerfile.asm。包含你的第一行的文件([BITS 16])不會產生錯誤,所以它應該是你正在尋找的東西。 –
我試着把nasm和」nothing引導裝載程序「從你的鏈接。它的工作原理。」nasm nothing.asm「創建一個目標文件」nothing「當我運行」文件沒有「,我的操作系統報告」沒有:x86引導扇區,代碼偏移量0x0「。是你需要的,我現在可以把它寫到軟盤上並從中啓動(雖然它什麼也不做,顯然)。 –