Я слежу за этим уроком как первый шаг в разработке загрузчика / ОС для x86 с использованием NASM:
http://joelgompert.com/OS/TableOfContents.htm
И я на уроке 4, который делает мой загрузчиквыведите строку «Hello, world».Я не понимаю смысла инструкции org
(директива?).
Насколько я понимаю, org
определяет, где исполняемая программа загружается в память.Это необходимо при использовании любого рода меток или относительных адресов в программе.
Предположим, у меня есть строка, определенная с меткой, как эта в моей программе:
szHello db 'Hello, world!', 0
А потом япопробуйте ссылаться на этот ярлык вот так (только соответствующие фрагменты):
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
Когда я запускаю первый пример, моя строка отображается правильно.Второй пример не работает.
Указатели на соответствующую документацию также будут высоко оценены, если проблема является концептуальной проблемой с моей стороны.