【发布时间】:2011-12-29 17:08:09
【问题描述】:
我正在学习本教程,作为使用 NASM 进行 x86 引导加载程序/OS 开发的第一次尝试:
http://joelgompert.com/OS/TableOfContents.htm
我正在上第 4 课,这将使我的引导加载程序打印“Hello, world”字符串。
我不明白org 指令(指令?)的含义。
据我了解,org 定义了正在执行的程序加载到内存中的位置。在程序中使用任何类型的标签或相对地址时都需要这样做。
假设我在我的程序中有一个用这样的标签定义的字符串:
szHello db 'Hello, world!', 0
然后我稍后尝试像这样引用该标签(仅相关的 sn-ps):
org 0x7c00
xor ax, ax
mov ds, 0
...
mov si, szHello
lodsb
...
int 0x10 ; Print first character of szHello
我的问题是,为什么不等于这个? :
org 0
mov ds, 0x7c00
...
mov si, szHello
lodsb
...
int 0x10
当我运行第一个示例时,我的字符串正确显示。第二个例子不起作用。
如果问题是我的概念问题,也将非常感谢您提供相关文档的指针。
【问题讨论】:
标签: assembly x86 nasm bootloader