30天自制操作系统——第1天 从计算机结构到汇编程序入门

落灰一学期的《30天自制操作系统》,希望能够利用大二最后这几个月完成操作系统的制作,以下是我阅读本书所记录的笔记以及学习过程,愿顺利完成。

1.先动手操作

(1)安装“二进制编辑器”,网址:http://www.vcraft.jp/soft/bz.html

启动画面

  在键盘上输入如下图内容,右边部分根据你所输入的内容自动显示,从000090开始后面全部是00,一直输入到最后168000这个地址,可以用Ctrl+C(复制),Ctrl+V(粘贴),在0001F0和001400附近有些地方不全是00, 需要自己改正,根据下图,然后整体检查,确认没有错误。

 中间想要保存结果,可以从菜单选择“文件”(File)->“另存为”(Save As),选择要保存的文件夹,进行改名保存,此处跟书上一样,选择“helloos.img”。若想要打开保存过的文件,首先打开Bz.exe,从菜单上选择“文件”(File)->“打开”(Open),然后选择目标文件。,但此时文件不能进行编辑,从菜单中选择“编辑”(Edit)->“只读”(Read Only)就可以进入编辑状态。

但是我这块儿无论怎么修改一直都不能编辑,我尝试过勾选只读,或者在保存的时候取消打开时只读,但是一直都弹出这个界面,如果有人能看到能不能指出错误,或者有其他的方法,求求了

 (2)将文件写入软盘

在这里我们使用虚拟机来读取软盘映像文件,常用的VMware Workstation Pro,安装好后,新建一个虚拟机myos。右击新建的虚拟机,在设置里选择软盘,选中helloos.img文件的位置。

 (3)我们将光盘中的tolset文件夹移到磁盘中,接下来我们打开刚才安装的 tolset 文件夹,在文件夹的名字上单击鼠标右键,从弹出的菜单上选择“新建”( New )——>“文件夹”( Folder )。画面上会显示出缺省的文件夹名“新建文件夹”( New Folder ),我们要把它改为“ helloos0 ”,并把前面保存的映像文件 helloos.img 复制到这个文件夹里。另外,刚才安装的 tolset 文件夹下有名为 z_new_w的子文件夹,其中有 !cons 9x.bat 和 !cons_nt.bat 这两个文件,要把它们也复制粘贴到helloos0文件夹里。
接着,在文件夹 helloos0里单击鼠标右键,从弹出的菜单中选择“新建”( New )——>“文本文件”( Text Document ),并将文件命名为‘ run.bat ”,回车后屏幕上会显示,“如果改变文件扩展名,可能会导致文件不可用。确实要更改吗?”的对话框,我们选择“是”,创建 run.bat 文件。然后在ran.bat文件名上单击鼠标右键,在弹出的菜单上选择“编辑”( Edit ),输人下面内容并保存。

然后按照同样的步骤,创建install.bat,并将下列内容输入进去。

2.究竟做了什么

(1)了解电脑结构。电脑的处理中心是CPU(central process unit),即“中央处理单元”,是处理中心。不过CPU只能与别的电路进行电信号交换,并且对于电信号,也只能理解开(ON)和关(OFF)两种状态。

CPU有计算指令,所以它能够进行整数的加减乘除运算,也可以处理负数、计算小数以及10的100次方这样庞大的数值,它甚至能够处理我们初中才学到的平方根和高中才学到的对数、三角函数,而且所有这些计算仅通过一条指令就能简单实现。虽然CPU功能如此强大,但它其实根本不理解数的概念。CPU就是个集成电路板,它只是忠实地执行电信号给它的指令,输出相应的电信号。

人们将找到各种信息转换成电信号的方法,使得CPU的应用范围越来越广。

而且我们能用 CPU 来处理的并不仅仅只有数据,我们还可以用电信号向 CPU 发出指令。其实我们所编写的程序最终都要转换成所谓的机器语言,这些机器语言就是以电信号的形式发送给CPU的。这些机器语言不过就是一连串的指令代码,实际上也就是一串0和1的组合而已。
软盘的原理也有异曲同工之妙,简单说来,就是把一进制的0和1转换为磁极的 N 极和 S 极而已,所以我们只用0和1就可以写出映像文件来。不仅是映像文件,计算机所能处理的各种文件最终都是用0和1写成的。因此可以说,不能仅用0和1米表达的内容,都不能以电信号的形式传给CPU ,所以这种内容是计算机所无法处理的。

虽然二进制数与电信号有很好的一一对应关系,但它位数太多,所以计算机业界普遍使用十六进制数。

3.初次体验汇编程序

用汇编语言进行编辑,可用Notepad++进行输入编辑,此时可以发现文件内容与我们用二进制编译器输入的内容是一模一样的。

 为了节省空间,我们可以将部分DB指令换为RESB指令,如下图所示,就可以将helloos.nas缩短,还能保证输出内容不变。

 接着我们用"!cons_nt.bat"或是"!cons_9x.bat"(根据Windows版本决定),打开命令窗。

方法一:

在命令窗输入以下指令:

提示符>..\z_tools\Notpad++.exe helloos.nas helloos.img

因为这里我们用的是Notepad++,所有输入Notepad++.exe

应该是这样

这样我们就得到了映像文件helloos.img。

方法二:

由于作者给出批处理文件asm.bat,以及install.bat文件和run.bat文件,我们只需要在命令行窗口输入"asm",就可以生成helloos.img文件,生成后再执行"run"指令,就可得到结果。

4.加工润色

“;”命令,相当于C/C++中的“//”,用于添加注释 

可以用DB直接写字符串,它会自动地查找字符串中每一个字符所对应的编码,然后把它们一个字节一个字节地排列起来。

$符号符号是一个变量,可以告诉我们这一行现在的字节数。在这个程序中我们前面已经输出132字节,所有$就是132,0xlfe-132=378,然后连续输出378个字节的0x00.

这里用$可以保证,即使更换字符串导致0x00字节数随之变化,我们还能保证软盘的第510字节(即第0xlfe字节)开始的地方是55 AA,汇编语言会自动计算需要输出多少个00。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值