3

我正在开始一些编写内核的实验并从中获得乐趣。我已经完成了基本的引导加载程序和以下指令:

[BITS 16]
[ORG 0x0000]

然而,在内核教程中,它从以下内容开始:

[ORG 0x0000]
[BITS 16]

我想知道给出这些指令的顺序是否有所不同?我正在使用 NASM 版本 2.06rc2,OpenSUSE 11.2

4

2 回答 2

3

最新的NASM版本为 2.08,根据BITS指令的文档判断。

该顺序不应该有任何区别,因为它们告诉 NASM 生成具有某些条件的文件,例如使用 16 位和寻址从零开始。由此看来,NASM 似乎足够聪明,可以知道它将产生什么样的输出。

于 2010-03-20T17:19:20.490 回答
1

哪个先来并不重要,但我通常在我的程序中遵循以下顺序:

        cpu 8086
        bits 16
        org 256

(因为bits 16是 NASM 的 bin 输出格式的默认值,所以我通常不会明确指定它,除非bits 32文件有某些部分。)

顺便说一句,带括号的表单是这些指令的较低级别的非“用户”表单。https://www.nasm.us/xdoc/2.14.02/html/nasmdoc6.html#section-6.1

BITS 指令具有完全相同的原始形式,[BITS 16]、[BITS 32] 和 [BITS 64]。用户级表单是一个宏,除了调用原始表单外没有其他功能。

于 2019-08-28T20:39:42.230 回答