30天自制操作系统第1天

30天制作操作系统第一天

这是一个菜鸡为了学习操作系统来练习写的操作系统,参照于书籍《30天自制操作系统》。
相关程序已经放到GitHub中,如果我的能力到位我可能会在这个操作系统的基础上进行添加及优化,作者已经把所有东西都做到极致了,我能做的很少,我只能把自己分析学习的文章总结出来。因为自己能力可能不到位,可能会有些错误希望大家理解,发到这里更多的原因的起到记录作用,如果以后的我回看我写的文章有错误,我会进行修改,同时也希望大家互相学习。
相关项目及源码已经放到GitHub中:https://github.com/Most3R-03/Simple-Operating-System

首先准备文件组成在这里插入图片描述
Asm.exe用于利用nask.exe将汇编语言编译成二进制,代码如下:
在这里插入图片描述
!cons_nt.bat就是简单的调用出cmd的程序
Run.bat就是简单的将编译出的镜像文件放置qemu文件中,并执行qemu文件
在这里插入图片描述
双击run.bat
写入文件
在这里插入图片描述
asm编译,双击run.bat,一丝喜悦。
在这里插入图片描述
在这里插入图片描述
由于懒,本人并没有直接敲出来,但是将日文的注释通过自己的理解换成了中文

0x7c00为程序的装载地址 ORG指令告诉nask要把这个程序装在到这里
在这里插入图片描述
在这里插入图片描述
首先入口将所有寄存器初始化,并将SP指向程序装载地址
MOV的指令相当于赋值!
8位等于一个字节,我们只用8个寄存器,每个寄存器为16位,所以我们只能储存16字节的东西,我们做的应该是一个16位的系统
寄存器中,只有BX,BP,SI,DI这几个可以指定内存地址,AX,CX,DX,SP均不能指定内存地址,因为没有这样的电路
所以如果你想把DX内存的地址的内容传给AL,只可以这么写
MOV BX,DX
MOV AL,BYTE [BX]
把BX当作一个中介。
但是MOV有个规则,源数据和目的数据的位数必须相同,就是说能向AL里带入的只有BYTE 所以、
MOV AL,BYTE [SI]
MOV AL, [SI]
这两个的功能是一样的,可以省略BYTE,因为AL也只能存一个字节的数据

ADD SI,1
就是把SI寄存器的值加一再赋值到SI寄存器中。
在这里插入图片描述
HLT这里使cpu进入待机状态,比如按下键盘 移动鼠标cup就会重新启动
在这里插入图片描述
Putloop的功能就是一个字符一个字符的从msg的地址中读取内容,并调用显卡的bios来一个字符一个字符的显示出来,显示完就进入fin进行待机休眠状态。

启动区内容的装载地址:0x00007c00-0x00007dff
------------------------------------------------------------------------------------------------------------------------------+
为了以后的开发便捷,我们先只用nask来制作512字节的启动区,剩下的部分我们用磁盘映像管理工具来做。
在这里插入图片描述
接下来的工具重新组合,
asm.bat被修改,将输出的文件名改成ipl.bin,顺便输出列表文件ipl.list
cmd代码如下:
…\z_tools\nask.exe ipl.nas ipl.bin ipl.lst
同时多出了makeimg.bat
在这里插入图片描述
利用edimg.exe将ipl写入开头,最后输出helloos.img的磁盘映像文件。

下一个内容大致就是把磁盘的内容装载到指定内存中,不再赘述。

一般向一个空软盘保存文件时:
1.文件名会写在0x002600以后的地方
2.文件的内容会写在0x004200以后的地方

现在的程序是从启动区开始,把磁盘上的内容装载到0x8000号地址,所以磁盘上的内容的地址应该位于0x8000+0x4200=0xc200号地址
在这里插入图片描述
上面的入口点,下面是对显卡BIOS的调用,al为0x13为:VGA图形模式
在这里插入图片描述
再次查看文件结构,haribote.sys为磁盘存储的格式,ipl.bin为写入磁盘的映像(它可以将磁盘读入内存)
Harbote.img为将haribote.sys写到磁盘后磁盘的备份文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值