4

我们被要求编写 16 位汇编代码并将其汇编为在 DOSBox 中运行。

我知道 16 位汇编代码与普通 x86 汇编代码的不同之处在于它使用了bits 1616 位寄存器(ax, bx, cx, ...)。

我尝试搜索如何将NASM 用于 16 位代码,但不幸的是不明白它在说什么。

我只想知道在 NASM 中使用什么参数来组装 16 位汇编代码?(-bin-obj?),然后如果可能的话,如何在 Linux 中调试它。如果不可能,如何在 DOSBox 中调试?

真的很想在这里得到一些帮助,因为我们得到的资源很少,所以我真的很困惑。

4

2 回答 2

4

根据您想要做什么,com直接使用创建文件nasm是一个简单的选项。您不应使用任何节,并指定org 100h以补偿加载地址。

例子:

ORG 100h

        lea dx, [msg]
        mov ah,9
        int 21h
        mov ax, 4c00h
        int 21h

msg: DB 'HELLO WORLD$'

组装为:nasm -f bin -o test.com test.asm

Dosbox 本身有一个可选的内置调试器,尽管它不是一个非常复杂的调试器。对于您的目的可能已经足够了。

于 2014-03-08T16:23:08.257 回答
2

为某些平台(在本例中为 DOS)创建程序的最佳方式是在该平台上工作。因此,使用 DOS IDE 和 DOS 调试器直接在 DosBox 中运行它们。

我不知道 NASM 是否有 DOS 版本,但是您可以使用FASM 进行 dos

FASM 的语法与 NASM 非常相似,如果需要,稍后您可以轻松地将其转换回 NASM。

FASM 内置了 DOS IDE,所以你不需要使用其他的。作为调试器,您可以使用已安装在 DosBox 中的 FreeDOS 调试。

于 2014-03-08T16:03:54.413 回答