《30天自制操作系统笔记》---第一天

发布时间 2023-04-01 22:51:50作者: 227569hy

第一天

第一个实验:用二进制写一个显示helloworld的“操作系统”

使用工具:
1、HxD-二进制编辑器
2、qumu模拟器

下载了HxD – 二进制编辑器
编辑好了书上的二进制程序
helloos0.img

然后按照书上写了bat脚本。
Install脚本:用来制作系统启动盘
Run脚本,用来启动qumu模拟器运行。

不过其中install脚本无法运行,可能是win10系统可能不太兼容。

第二个实验:通过汇编写一个显示helloworld的“操作系统”

使用工具:
nask.exe:NASM编译器改编的编译器,提高了优化能力,NASM用于编译适合操作系统的软件,而不适合用于编译操作系统

代码直接使用作者的helloos.nas,编译了汇编代码得到helloos.img

相关汇编指令:

DB:DB 指令是 “data byte” 的缩写,也就是往文件里直接写入 1 字节的指令。

RESB:RESB 指令是 “reserve byte” 的缩写,如果想要从现在的地址开始空出 10 个字节来,就可以写成 RESB 10

DW/DD:它们分别是 “data word” 和 “data double-word” 的缩写。 word 的意思是 “单词”,但在计算机汇编语言的世界里,word 指的是 “16 位” 的意思,也就是 2 个字节。“double-word” 是 “32 位 “的意思,也就是 4 个字节。
; 注释命令

相关概念(解释见书):

FAT12格式
启动区
IPL:initial program loader
启动(boot)

部分学习知识:
软盘的第一个扇区被称为启动区,512字节就是一个扇区。
计算机会检查第一个扇区的最后两个字节,如果最后两个字节不是0x55 AA,计算机会认为这张软盘上没有所需的启动程序。
由于启动区太小,放不下操作系统,所以一般放的是加载操作系统的程序放在启动区中。所以也称启动区为IPL。不过启动区名称要是任意8字节字符串。

总结:

第一天直接用IPL执行了显示hello world程序(先后用二进制和汇编写的)。