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 调试命令来查看每个命令的值和地址,但是当我使用调试时它会显示其他内容

我的问题是有没有可以调试这些文件的应用程序?甚至引导加载程序程序集二进制文件?

4

1 回答 1

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|

您应该阅读FASM 手册的2.2.32.2.4部分。

于 2013-04-13T09:00:40.167 回答