[BITS 16]和[ORG 0x0000]指令的顺序

时间:2010-03-20 17:00:31

标签: assembly kernel nasm opensuse

我正在开始编写内核并享受乐趣。我已完成基本的引导加载程序和以下指令:

[BITS 16]
[ORG 0x0000]

然而,在内核教程中,它以:

开头
[ORG 0x0000]
[BITS 16]

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

2 个答案:

答案 0 :(得分:2)

最新NASM版本为2.08,并根据BITS指令的文档进行判断..

顺序不应该有所不同,因为它们告诉NASM生成具有某些条件的文件,例如使用16位并且从零开始寻址。从它开始,NASM似乎足够聪明,知道它会产生什么样的输出。

答案 1 :(得分: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]。用户级表单是一个宏,除了调用原始表单外,它没有其他功能。