比较难的地方在于没有接触相关的代码并且未精通操作系统基础原理等原因而造成实现困难,并且存在漏洞
加粗字体代表问题
感谢UP主的视频,虽然还有问题未解决 或者因为时间长或者软件版本问题而造成的不适配 踌躇月光-哔哩哔哩_Bilibili
makefile:3: *** missing separator. Stop.
此时在自动化进行make 命令的情况下 其第二行要用tab来实现 空格不行 还有人说是因为出现中文字符 让我来重新打一遍 不行 修改vscode配置 将设置中的editer.detect中的第一个取消勾选,结果不行 将其顶格写 最后不知道是哪一步发挥作用,,弄好了
ata0 could not open hard drive image file'master.img'
是因为有master.imglock文件,删除重启即可
(未解决问题)
no rule to make target bochs
百度查到其原因是因为路径改变 但是确实是一步步跟着走的,找不到路径改变的地方以及找不到需要更改的路径,其已经在最后的地步了 就是没有快捷命令 使用bochs -q能实现功能
BIOS
Basic Input Output System BIOS 在加电自检将主引导扇区读 0X7C00位置,并跳转到这里执行
int 0x10是bios系统调用,显示器相关的功能
实模式
8086模式16位 保护模式
-Real Mode -Protected Mode '''s ;0xb8000是文本显示器的内存区域 mov ax,0xb800 mov ds,ax mov byte[0],'H' '''s
实模式的寻址方式
有效地址=段地址*16+偏移地址
EA=0xb800*16+0=0xb800
EA(Effective Address) 16bit -1M-20 bit
20-16=4
段地址<<4
32bit -4G
主引导扇区结构
-代码446B -硬盘分区表 64B=4*16B//没有硬盘分区表启动不了 -魔数 0xaa55 -0x55 0xaa
主引导扇区的主要功能
读取内核加载器,并执行
参考文献
IBM PS 2 and PC BIOS Interface Technical Reference