我下面這個教程作爲首次進軍引導程序/ OS開發利用x86的NASM:86 NASM「組織」的指導意義
http://joelgompert.com/OS/TableOfContents.htm
而且我在第4課,這是使我bootloader輸出「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
當我運行第一個示例時,我的字符串顯示正確。第二個例子不起作用。
如果問題是我的概念問題,那麼對相關文檔的指針也將非常感激。
非常好,那有用,謝謝。不過,我不確定自己完全明白。 'org'消耗一個段地址,還是一個段的偏移量? –
這是當前部分的偏移量。 –
'mov ds,0x7c0'不是有效的指令。也許你的意思是'mov ax,0x7c0''mov ds,ax' –