入手一本《30天自制操作系统》,内容诙谐有趣,很适合对操作系统一窍不通的新手。

据作者所言,这本书的最终目标是从零开始编写一个五脏俱全的图形操作系统,不用什么基础,而且只需30天!!

没有看错,只需30天,看着真的心动了。编写一个操作系统应该是很多程序员的梦想吧,可能很多人想都不敢想,觉得太难了。

但是作者却说这是一件很简单的事,那么挑战一次也未尝不可吧。

顺便一提,文中用到的软件、文件都在文章最后的网盘连接里,可以直接下载。

那么就正式开始第一天——

一、制作软盘映像文件helloos.img

首先要用到一种直接对二进制数进行编辑的软件,Binary Editor,用它来进行软盘映像文件的制作。

方法一、直接输入十六进制数

打开编辑器,直接从键盘上输入EB4E904845…

要敲好多内容,虽说是二进制编辑器,输入的都是十六进制的数,如果敲101010…这种的很容易出错而且敲的量更多了。 最终文件大小是1474560(1440X1024)字节,然后将内容另存为helloos.img,这样软盘映像文件就制作好了。

方法二、使用汇编程序生成

使用汇编程序helloos.nas生成helloos.img,helloos.nas程序 只有22行。

汇编程序虽然只有22行,但是很难看出来这个程序是干什么的。对程序员来说,写代码怎么能不加注释呢,那么把上面的程序润色一下——


简单复习一下汇编指令吧:

DB(define byte)指令是往文件里写入一个字节的指令,也可以直接用它来写字符串。在写字符串时,汇编语言会查找字符串中每个字符对应的编码,然后一个字节一个字节的排列起来。

RESB(reserve byte)指令略写预约字节,比如RESB 16,就是从现在开始的地址空出来16个字节,使用编译器nask.exe,不仅会将16个字节空出来,还会在空出来的地址上填入0x00,节省了大量代码。

RESB 0x1fe-中的中的中的符号,在这里它是一个变量,可以告诉我们这一行的字节数。比如在这个程序中,前面已经输出了132字节,这里$就是132。编译器nask.exe先用0x1fe减去132得出378,然后连续输出378个字节的0x00。

;命令,是注释命令,相当于C语言中和Java中的“//”。

DW(define word)和DD(define double-world)指令类似于DB,前者是2个字节,后者是4个字节。


将编译器nask.exe和源代码helloos.nas放在同一目录下,在命令行窗口输入如下指令,生成helloos.img:

二、使用helloos.img启动电脑

将这个helloos.img软盘映像文件写入软盘,用它来启动电脑,画面上会出现“hello,world”。

可能有00后的小伙伴会问,软盘是什么,没见过这东西?它长这样——

用途跟U盘差不多,但它的存储容量太小,现在已经基本不用软盘了。现在很多电脑也没有读软盘的软驱,笔者电脑也没有软驱。不过现在我们有更方便的工具——虚拟机,可以用虚拟机来读取软盘映像文件。

这里使用常用的VMware Workstation Pro,安装好后,新建一个虚拟机myos。右击新建的虚拟机,在设置里选择软盘,选中helloos.img文件的位置。(若没有软盘选项,点击下方的添加,加载软盘的驱动即可)

准备工作完成后,点击运行就可以。

界面显示了hello world,如果想要显示其他内容,更改一下helloos.img的内容就可以了,还是蛮简单的~

百度网盘链接:
链接:https://pan.baidu.com/s/1JU2csFnN-QyiIGmOJgRhlw
提取码:f2zf

30天自制操作系统——第一天制作一个Hello word操作系统相关推荐

  1. 零元学Expression Blend 4 - Chapter 3 熟悉操作第一步(制作一个猴子脸)

    原文:零元学Expression Blend 4 - Chapter 3 熟悉操作第一步(制作一个猴子脸) 本篇内容会教你如何使用笔刷.钢笔.渐层以及透明度的调整,还有如何转化图层和路径,最重要的是要 ...

  2. linux写一个最简单的操作系统,自己动手编写一个简单的操作系统

    有人可能担心自己既没有学过计算机原理,也没有学过操作系统原理,更不懂汇编语言,对C语言也一知半解,能写操作系统吗?答案是没问题.我将带大家一步一步完成自己的操作系统.当然如果学一学上述内容再好不过. ...

  3. 自己动手写操作系统(二)一个最小的“操作系统”

    第一步 首先新建一个boot.asm文件,用vim将书中的代码1-1写入文件中,并保存.然后使用nasm编译. 附上代码: org 07c00hmov ax, cs mov ds, ax mov es ...

  4. 迷你linux操作系统,自己动手做一个迷你型Linux操作系统

    本文要构建的这个迷你型的 Linux 系统只能在一台特定的单机上运行,如果读者朋友们有兴趣的话,在这个系统的基础上加以改进,是可以构建出通用的.可以在大多数常规 PC 机上即插即用的系统来的.但是这已 ...

  5. 拼一个自己的操作系统(SnailOS 0.03的实现)

    拼一个自己的操作系统 SnailOS 0.03的实现 拼一个自己的操作系统SnailOS0.03源代码-Linux文档类资源-CSDN下载 操作系统SnailOS学习拼一个自己的操作系统-Linux文 ...

  6. 如何制作没用的电脑操作系统

    注意:本文章只是让新的操作系统在显示器上显示"Hello,OS World",并不是制作新的一种操作系统. 电脑的操作系统有许多种.那么这些操作系统是怎么被发明出来的呢?今天这篇文 ...

  7. 《30天自制操作系统》---第一天

    <30天自制操作系统>---第一天 二进制编译与文本编译器大家用自己顺手的就可以,今天通过两种方法运行虚拟机,第一种通过作者提供的工具运行在QEMU中,第二种方法运行到VMWare中,直接 ...

  8. 30天自制操作系统:第一天

    30天自制操作系统:第一天 趁着双十一采购了一大堆书,准备消化一下,不然就太浪费了. 书上推荐的二进制编辑器是bz ,界面和版本有点古老,还只有日语和英语版本. 不过直到最近一年还一直在维护,最新的版 ...

  9. 30天自制操作系统——第四天使用C语言制作操作系统进度条

    昨天已经让画面显示黑屏了,但是黑屏太没意思,今天来让画面画点东西吧. 今天的任务还是比较有趣的,主要包括内存写入.画面显示条纹图案.设定色号.绘制矩形,最后制作一个进度条. 每个大标题下的代码,都在文 ...

最新文章

  1. php扩展实现hook,ThinkPHP3.2 扩展(钩子,HOOK)
  2. 让Qt应用程序跑在Android上
  3. 高段位产品经理必须掌握的商业模式分析该怎么做?
  4. 保存tensorboard的损失曲线为图片
  5. Xshell出现要继续使用此程序必须应用到最新的更新或使用新版本
  6. 进阶运维:SSH无缝切换远程加密
  7. 马丁关于id加密验证防攻击
  8. 微会动平台与微云推战略携手赋能企业数字营销推广与业绩增长闭环
  9. 使用maven打包bootdo并运行
  10. 人工智能在日常农业种植中的应用
  11. Modern Family 开篇语
  12. Modular Arithmetic
  13. 三次改变世界、却被无情出局的程序员
  14. JavaScript - JS验证邮箱 ××× VISA 卡输入是否正确|正则表达式
  15. 解决The plain HTTP request was sent to HTTPS port
  16. GIMP的安装和使用
  17. ctfshow NodeJs web334-web344 wp
  18. 使用Packer在Winodws VMware Workstation Pro上自动部署Windows Server 2016中文版
  19. Ubuntu下使用ROS moveit 连接ABB机器人
  20. 黑马探花交友----5.聊天消息-即时通讯

热门文章

  1. 经济应用文写作【3】
  2. MPT(Merkle Patricia Tree)树结构示例
  3. MTK 平台sensor arch 介绍-hal
  4. 惊爆:当Python代码遇到zip解压炸弹,未做防护的你后悔莫及!
  5. 神经网络(十)激活函数DLC
  6. 【电磁】基于Matlab求解瞬变电磁TEM层状介质正演
  7. 计算机病毒知识及防护课件,计算机病毒和预防ppt课件
  8. 企业应用架构模式学习(四):web表现层
  9. Oracle触发器来记录表删除操作简单方法
  10. JavaScript实现注册模块功能