《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

《30天自制操作系统》笔记(01)——hello bitzhuwei's OS!

最初的OS代码

 ; hello-os
; TAB=4 ORG 0x7c00 ; 指明程序的装载地址 ; 以下这段是标准FAT12格式软盘专用的代码 JMP entry
DB 0x90
DB "HELLOIPL" ; freeparam 启动区的名称可以是任意的字符串(8字节)
DW ; 每个扇区(sector)的大小(必须为512字节)
DB ; 簇(cluster)的大小(必须为1个扇区)
DW ; FAT的起始位置(一般从第一个扇区开始)
DB ; FAT的个数(必须为2)
DW ; 根目录的大小(一般设成224项)
DW ; 该磁盘的大小(必须是2880扇区)
DB 0xf0 ; 磁盘的种类(必须是0xf0)
DW ; FAT的长度(必须是9扇区)
DW ; 1个磁道(track)有几个扇区(必须是18)
DW ; 磁头数(必须是2)
DD ; 不使用分区,必须是0
DD ; 重写一次磁盘大小
DB ,,0x29 ; 意义不明,固定
DD 0xffffffff ; (可能是)卷标号码
DB "HELLO-OS " ; freeparam 磁盘的名称(11字节)
DB "FAT12 " ; 磁盘格式名称(8字节)
RESB ; 先空出18字节 ; 程序核心 entry:
MOV AX, ; 初始化寄存器
MOV SS,AX
MOV SP,0x7c00
MOV DS,AX
MOV ES,AX MOV SI,msg
putloop:
MOV AL,[SI]
ADD SI, ; 给SI加1
CMP AL,
JE fin
MOV AH,0x0e ; 显示一个文字
MOV BX, ; 指定字符颜色
INT 0x10 ; 调用显卡BIOS
JMP putloop
fin:
HLT ; 让CPU停止;等待指令
JMP fin ; 无限循环 msg: ; 信息显示部分
DB 0x0a, 0x0a ; 换行2次
DB "hello, bitzhuwei's OS!" ; freeparam
DB 0x0a ; 换行
DB RESB 0x7dfe-$ ; 填写0x00,直到0x001fe DB 0x55, 0xaa ; 以下是启动区以外部分的输出 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB

02helloos.nas

 

虚拟机加载helloos.img

下载(30天自制操作系统光盘.rar),解压。

将"OS\projects\01_day\helloos1"文件夹复制到"OS\tolset"文件夹下,如下图所示。

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

进入"OS\tolset\helloos1"文件夹,删除"helloos.nas"文件,然后将上表中的"02helloos.nas"内容保存到此处,并重命名为"helloos.nas"。(即更新helloos.nas文件的内容)

双击"!cons_9x.bat"(若后续操作失败,则双击"!cons_nt.bat"重试),在弹出的命令行窗口中输入"asm",回车;然后输如"run",回车。

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

之后你就可以看到QEMU这个虚拟机加载启动了(以helloos.nas为源代码生成的)helloos.img这个及其简单的操作系统,如下图所示。

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

真机加载helloos.img

刚刚是用虚拟机启动的helloos.img这个操作系统,下面介绍如何用物理机器加载启动之。

制作启动盘

首先,准备一个U盘,保证里面的数据你都不需要了。

然后,下载一个UltraISO软件。运行之,打开刚刚生成的helloos.img,如下图所示。

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

然后,使用菜单项"启动-写入硬盘映像…",如下图所示。

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

在弹出的窗口中,确定"硬盘驱动器"中选中的是你准备好的U盘,然后点击"写入"按钮,稍候即可,如下图所示。

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

真机启动

刻录成功了,就是说启动盘做好了。下面就重启电脑,然后选择从U盘启动,你就可以看到真机启动helloos.img了。除了一些细节不同外,和虚拟机加载helloos.img的情况基本一致。

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

总结

以后继续编写OS用虚拟机测试比较方便。

操作系统的hello world就算完成了。

点此查看下一篇《30天自制操作系统》笔记(02)——导入C语言

上一篇:hello world 为什么我们看到学习中有这一句话!!!


下一篇:Java不为人知的小秘密