2013-04-01 2 views
3

Я новичок в сборке и программировании на низком уровне Я использую FASM в окнах xp. когда я собираю следующий код, он дает мне .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' 

Книга Я учусь использую окна команды отладки, чтобы увидеть значение и адрес каждой команды, но когда я использую отладку он показывает что-то еще

Моим вопроса есть ли приложение, которое может отлаживать эти файлы? даже двоичные файлы сборки загрузчика?

+0

Ndisasm попытается разобрать его ... но я не думаю, что вы найдете его полезным. Какие. если что-нибудь, этот код должен делать? –

+0

Его просто тест. Я изучаю сборку, и я просто хочу посмотреть, как она хранит данные. – MadZarx

+0

Может быть, «hiew» или «biew» (я думаю, они сейчас называют это «bye»). Команда «d» для DEBUG тоже должна это сделать. Или ... не так уж сложно написать свою собственную процедуру hexdump. Я не думаю, что вы хотите на самом деле «отладить» или «разобрать» его. Загрузочный загрузчик, возможно, захотите разобрать. Он, вероятно, не «отлаживает» очень хорошо загружен по неправильному адресу ... –

ответ

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 

Вы можете собрать как плоские двоичные и проверить результат с шестнадцатеричным:

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 и 2.2.4 руководства FASM.

+0

О, действительно спасибо Антуану. Он хорошо работал Могу ли я использовать этот метод для полного загрузчика, который был собран с NASM? – MadZarx

+0

@MadZarx Конечно, например [здесь] (http://stackoverflow.com/questions/9320423/test-native-x86-programs-building-bootable-images-drives/9321343#9321343) - очень упрощенный загрузочный сектор, написанный в NASM. –

Смежные вопросы