2013-04-01 64 views
3

我是新的組裝和低級別編程 我在Windows XP中使用FASM。當我組裝波紋管代碼時,它會給我一個.bin文件。調試平板組裝二進制

data1 db 25 
data2 db 10001001b 
data3 db 12h 
     org 0x10 
data4 db '2367' 
     org 0x18 
data5 db ? 
     org 0x20 
data6 db 'Hello there' 

這本書我正在學習使用的是Windows調試命令來查看每個命令的價值觀和地址,但是當我使用調試它顯示別的

我的問題是是否有任何應用程序,可以調試這些文件?甚至是bootloader程序集二進制文件?

+0

Ndisasm將嘗試拆解它......但我認爲你不會覺得它有用。什麼。如果有的話,這段代碼應該做什麼? –

+0

它只是一個測試。我正在學習彙編,我只想看看它如何存儲數據 – MadZarx

+0

也許「hiew」或「biew」(我認爲他們現在稱它爲「再見」)。 DEBUG的'd'命令也應該這樣做。或者...編寫自己的hexdump例程並不難。我不認爲你想實際「調試」或「反彙編」它。一個bootloader,你可能想要反彙編。它可能不會「調試」非常好 - 加載在錯誤的地址... –

回答

0

使用'org'指令將變量放在特定位置可以在MASM中工作,但不能在FASM或NASM中工作。

隨着FASM和NASM你必須做這樣的:

data1 db 25      // 0x00 
data2 db 10001001b    // 0x01 
data3 db 12h      // 0x02 
     times 0x10 - ($-$$) db 0 
data4 db '2367'     // 0x10 
     times 0x18 - ($-$$) db 0 
data5 db '?'      // 0x18 
     times 0x20 - ($-$$) db 0 
data6 db 'Hello there'   // 0x20 

然後,您可以組裝成扁平二進制文件並檢查與hexdump都結果:

00000000 19 89 12 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 
00000010 32 33 36 37 00 00 00 00 3f 00 00 00 00 00 00 00 |2367....?.......| 
00000020 48 65 6c 6c 6f 20 74 68 65 72 65     |Hello there| 

你應該閱讀部分2.2.3和FASM手冊的2.2.4

+0

哦,真的非常感謝安託萬。它運行良好 我可以使用這種方法完成與NASM組裝的完整引導程序嗎? – MadZarx

+0

@MadZarx當然,例如[這裏](http://stackoverflow.com/questions/9320423/test-native-x86-programs-building-bootable-images-drives/9321343#9321343)是一個非常簡單的引導扇區在NASM。 –