自己写操作系统之virtualbox引导扇区启动不了

自己写操作系统之virtualbox引导扇区启动不了

问题综述

最近在学着写操作系统,博主也仅仅是小白一个,学了一点点基础的汇编之后就开始上手了,所以在写引导记录的时候难免得不断地调试。但是有时候无论你再怎么检查你的汇编程序也发现不了错误,或者说你的汇编程序完全就是对的,但是虚拟机在启动的时候就是会提示你找不到可以启动的设备。那么问题来了,这是为什么呢。
最后,经博主的不断调试,终于找出了问题的所在,就是,引导扇区中不能出现0aH(十进制数是10)。

示例

可能也有自己学写操作系统的小伙伴,关于引导扇区,以及引导记录什么的我就不概述了。以下仅通过简单示例来展示。

  1. 引导扇区中出现0aH
    简易引导记录汇编示例 汇编编译,显示编译后机器码机器码
    以上标红的是汇编后的机器码
    mov ax,10 —> b8 0a 00
    因为这儿出现了0aH,所以会导致vitrualbox引导记录启动不了。

不知道这是虚拟机软件设计的原因还是真机对于引导扇区的操作也是同样的处理,所以建议在引导扇区最好不要出现0aH,可将其放置到引导扇区后,或者通过将其加载到内存0:7e00H后通过call,jmp等调用。

此处一个实例就是设置全局描述符表的时候,如果在图形模式下,图形缓冲区起始是a000:0000的时候,最好通过加载的方式来设置全局描述符表,不然直接在引导扇区里写会导致启动不了。

  1. 正确示例
    由于上传图片太多可能会导致加载变慢,所以就不演示了。如果自己尝试,可将0aH(十进制10),改为其他任意数值进行尝试。

猜你喜欢

转载自blog.csdn.net/weixin_43465510/article/details/84474314
今日推荐