我尝试使用 kolibri 引导加载程序执行简单的内核。它被加载到 1000:0000 中。我不明白,这部分有什么问题:
...
; switch to PM
mov eax, cr0
or al, 1
mov cr0, eax
use32
PROTECTED_ENTRY:
mov ax, 00010000b ; DATA
mov ds, ax
mov ss, ax
mov esp, 0xFFFF
jmp $
mov ax, 00011000b ; VIDEO
mov es, ax
mov edi, 0
mov esi, string
int 1
jmp $
因为在调试器中它看起来像这样
这里发生了什么?为什么 ES 和 DS 没有被改变?
PS我试图让这个内核与kolibri loader一起工作: http ://wasm.ru/article.php?article=ia32int