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

本文涉及的产品
文件存储 NAS,50GB 3个月
简介:

转自:http://www.cnblogs.com/bitzhuwei/p/OS-in-30-days-01-hello-bitzhuwei-OS.html

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

最初的OS代码

复制代码
复制代码
 1 ; hello-os
 2 ; TAB=4  3  4 ORG 0x7c00 ; 指明程序的装载地址  5  6 ; 以下这段是标准FAT12格式软盘专用的代码  7  8 JMP entry  9  DB 0x90 10 DB "HELLOIPL" ; freeparam 启动区的名称可以是任意的字符串(8字节) 11 DW 512 ; 每个扇区(sector)的大小(必须为512字节) 12 DB 1 ; 簇(cluster)的大小(必须为1个扇区) 13 DW 1 ; FAT的起始位置(一般从第一个扇区开始) 14 DB 2 ; FAT的个数(必须为2) 15 DW 224 ; 根目录的大小(一般设成224项) 16 DW 2880 ; 该磁盘的大小(必须是2880扇区) 17 DB 0xf0 ; 磁盘的种类(必须是0xf0) 18 DW 9 ; FAT的长度(必须是9扇区) 19 DW 18 ; 1个磁道(track)有几个扇区(必须是18) 20 DW 2 ; 磁头数(必须是2) 21 DD 0 ; 不使用分区,必须是0 22 DD 2880 ; 重写一次磁盘大小 23 DB 0,0,0x29 ; 意义不明,固定 24 DD 0xffffffff ; (可能是)卷标号码 25 DB "HELLO-OS " ; freeparam 磁盘的名称(11字节) 26 DB "FAT12 " ; 磁盘格式名称(8字节) 27 RESB 18 ; 先空出18字节 28 29 ; 程序核心 30 31 entry: 32 MOV AX,0 ; 初始化寄存器 33 MOV SS,AX 34 MOV SP,0x7c00 35 MOV DS,AX 36 MOV ES,AX 37 38 MOV SI,msg 39 putloop: 40 MOV AL,[SI] 41 ADD SI,1 ; 给SI加1 42 CMP AL,0 43 JE fin 44 MOV AH,0x0e ; 显示一个文字 45 MOV BX,15 ; 指定字符颜色 46 INT 0x10 ; 调用显卡BIOS 47 JMP putloop 48 fin: 49 HLT ; 让CPU停止;等待指令 50 JMP fin ; 无限循环 51 52 msg: ; 信息显示部分 53 DB 0x0a, 0x0a ; 换行2次 54 DB "hello, bitzhuwei's OS!" ; freeparam 55 DB 0x0a ; 换行 56 DB 0 57 58 RESB 0x7dfe-$ ; 填写0x00,直到0x001fe 59 60  DB 0x55, 0xaa 61 62 ; 以下是启动区以外部分的输出 63 64 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 65 RESB 4600 66 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 67 RESB 1469432
复制代码
复制代码

 

 

虚拟机加载helloos.img

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

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

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

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

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

真机加载helloos.img

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

制作启动盘

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

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

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

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

真机启动

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

总结

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

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

 

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

如果您愿意花几块钱请我喝杯茶的话,可以用手机扫描下方的二维码,通过微信捐赠。我会努力写出更好的文章。 
微信捐赠不显示捐赠者的个人信息,如需要,请注明您的联系方式(微信留言只显示10个汉字)) 
Thank you for your kindly donation!





本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/8134375.html,如需转载请自行联系原作者

相关文章
|
5月前
|
算法 Unix 程序员
[oeasy]python031_[趣味拓展]unix起源_Ken_Tompson_Ritchie_multics
回顾了上次内容关于调试的基本概念后,本文介绍了Unix操作系统的起源。从早期计算机任务的独占执行方式讲起,到1960年代 Dartmouth 开发出分时算法,使得一台主机能够面对多个终端,轮流使用CPU时间片。随后,贝尔实验室、通用电气和MIT合作开展Multics项目,项目成员Kenneth Thompson与Dennis Ritchie在此期间开发了一款名为《Space Travel》的游戏。然而,因金融动荡等原因,Multics项目最终被裁撤。Thompson和Ritchie后来利用实验室闲置的一台PDP-7计算机仅用三周时间就开发出了Unix操作系统的第一版,初衷是为了能够继续玩游戏。
55 3
|
架构师 Linux Android开发
[oeasy]python0101_尾声_PC_wintel_8080_诸神的黄昏_arm_riscv
[oeasy]python0101_尾声_PC_wintel_8080_诸神的黄昏_arm_riscv
162 0
[oeasy]python0101_尾声_PC_wintel_8080_诸神的黄昏_arm_riscv
|
移动开发 Unix Linux
ACM题目中关于数据的生成以及OJ上Linux和Windows里回车和换行的处理
ACM题目中关于数据的生成以及OJ上Linux和Windows里回车和换行的处理
248 0
ACM题目中关于数据的生成以及OJ上Linux和Windows里回车和换行的处理
编程小技巧3-IDEA插件Power Mode || 写代码帅是一辈子的事
编程小技巧3-IDEA插件Power Mode || 写代码帅是一辈子的事
574 0
编程小技巧3-IDEA插件Power Mode || 写代码帅是一辈子的事
|
安全 Linux
Linux下find与exec的联手干大事
Linux下find与exec的联手干大事
174 0
Linux下find与exec的联手干大事
|
自然语言处理 Linux
oeasy教您玩转linux 010216 随机诗词 fortunezh
我们来回顾一下😌 上一部分我们都讲了什么?🤔 下载fortune 输出重定向到cowsay 多重输出重定向 fortune的细节 有没有中🀄️文的fortune呢 # 搜索一下fortune apt search fortune chinese 找到了,去下载 中🀄️文fortune 下载中文fortune sudo apt install fortune-zh fortune-zh /usr/share/games/fortunes/{tang300,song100}这两个是中🀄️文的是词库 tang300
294 0
|
Linux
oeasy 教您玩转linux 之010208 满屏乱码 bb
oeasy 教您玩转linux 之010208 满屏乱码 bb
210 0
|
安全 Linux
oeasy 教您玩转 linux 010207 黑客帝国 matrix
oeasy 教您玩转 linux 010207 黑客帝国 matrix
431 0
|
Web App开发 Go
《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!【转】
转自:http://www.cnblogs.com/bitzhuwei/p/OS-in-30-days-01-hello-bitzhuwei-OS.html 阅读目录(Content) 最初的OS代码 虚拟机加载helloos.
2016 0

热门文章

最新文章