引导至 DIY 内核后 VGA 内存出现问题



这是我的项目结构:

  • "boot.asm" :进入 64 位模式,进行 CHS 读取并将"内核"加载到0x100000,然后 JMP 加载到0x100000
  • "kernel.asm"

这是"kernel.asm":

   [bits 64]
   msg:   db      "K"
   mov al, [msg]
   mov ah, 3 ; cyan
   mov word [0xb8000], ax
   jmp $

当放入"boot.asm"中时,此代码有效。但只有在放入"kernel.asm"中时才会打印奇怪的字形或"S"......我不知道为什么。问题似乎出在"味精"声明上。例如,当我将" msg: db "K"替换为" msg equ "K" 时,它会打印出好的字符,我无法找出问题所在,您有什么建议吗?

干杯

你忘了跳过味精。除非程序执行 msg 跳转,否则 msg 将被解释为命令。请尝试以下代码:

[bits 64]
jmp start
msg:   db      "K"
start:
mov al, [msg]
mov ah, 3 ; cyan
mov word [0xb8000], ax
jmp $

已解决:解决方案只是将[org 0x100000]放在kernel.asm中,以提及nasm将代码放在哪里,以确保所有内存访问都处于绝对寻址状态。

相关内容

  • 没有找到相关文章

最新更新