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
。问题发生在程序的任何位置(包括以前没有做过任何事情),并且程序以实模式运行。
我的问题是:这是正常的吗?我错过了什么吗?我怎样才能解决这个问题?