1
我正嘗試在使用nasm的x86程序集中編寫一個簡單的bootloader。在代碼的幾個地方,我必須使用形式爲[es:di]
的有效地址。代碼編譯沒有錯誤,但在運行時,段被忽略。例如,對於在使用nasm的有效地址中忽略的段
mov ax, 0x07C0
mov es, ax
mov di, 0x10
lea eax, [es:di]
的lea
後立刻寄存器的樣子:
EAX=00000010
EDI=00000010
ES =07c0 00007c00 0000ffff 00009300
但EAX應該已經7C10
。問題發生在程序的任何位置(包括以前沒有做過任何事情),並且程序以實模式運行。
我的問題是:這是正常的嗎?我錯過了什麼嗎?我怎樣才能解決這個問題?