assembly 要在物理计算机上 Boot 它,我需要做什么更改?

gupuwyp2  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(113)

我刚刚用汇编语言写了一个非常基本的 Bootstrap ,现在正在尝试写一个内核。这是我目前所拥有的。

extern "C" void main() {
  int addr = 0xb8000;
  int i = 0x00;
  for (int i = 0x00; i < 0xff; i += 0x11) {
    *(char*)addr = 'A';
    addr++;
    *(char*)addr = i;
    addr++;
  }
  return;
}

它真正做的只是显示一些颜色。它是通过写入视频存储器来实现的,对于QEMU来说是0xb8000。如果我想把这个“操作系统”闪存到USB上,然后在笔记本电脑上 Boot 它,我需要改变视频存储器的地址吗?有没有办法自动找到那个地址?

s4n0splo

s4n0splo1#

老实说,这应该很好,因为是。0xB8000是硬编码的地址,视频显示在文本模式。有没有地址空间布局随机化在这里进行,这是字面地址。如果你有DOSBOX你可以尝试一下,它应该工作的书面。

相关问题