30天自制操作系统日志(1)

一、实验主要内容
1、 用二进制编辑器编辑机器语言:
到作者给定的网站下载一个二进制编辑器,他能直接对二进制数进行编辑。按照作者的说法,如果对机器码非常熟悉的话,理论上可以用二进制编辑器完成(此处理器上的)任何软件的制作,小至一个计算器,大至一个编译器,操作系统。但是要用这个写出像Windows这样的操作系统是不可能的。编辑器如下:

好,按照作者所给写出相应的机器语言后,生成了img镜像文件。
接下来要用作者给的PC模拟器qemu来仿真运行,刚刚写的“操作系统”。首先要创建一个bat文件,名为run.执行bat文件就是要进入cmd命令行,来执行相应程序。很明显!cons_nt.bat就是要直接进入目前所处文件夹,然后run文件就是我们要进行的操作,这里我们是要将helloos.img镜像文件仿真运行。代码如下:
copy helloos.img …\z_tools\qemu\fdimage0.bin

…\z_tools\make.exe -C …\z_tools\qemu
//将当前目录下的helloos.img镜像文件拷贝复制并重命名为fdimage0.bin保存到仿真程序所在的目录即qemu目录,用z_tools文件夹下的qemu仿真运行。运行结果如下:

2、 体验并润色汇编语言:
果然遇到事还是用汇编语言要行
用记事本 输入:
DB 0xeb,0x00,0xeb,0x00,xeb,0x00,0xeb,0x00
DB 0xeb,0x00,0xeb,0x00,xeb,0x00,0xeb,0x00

保存为helloos.nas,然后用汇编器汇编即可生成和二进制编辑器编辑的一样的效果。汇编器仅仅是一个文本转换工具而已,将一条汇编指令转换为对于的机器指令。
DB 就是Date Byte的简写
DW :data word. DD:data double-word.
RESB 16 ;Reserve byte 预留16个字节0.

每次进行汇编编译很麻烦,作者写了一个批处理文件,每次点击它即可,这是自动化的第一步
Asm.bat内容:
…\z_tools\nask.exe helloos.nas helloos.img
;运行汇编器nask.exe将helloos.nas汇编为 helloos.img。

进过润色后的汇编代码好理解多了,我们也可以直接在这里修改我们要显示的内容了。
然后好像第一天就结束了,全程跟着作者做,理解各个步骤的意义和好处我觉得还行。下面是一些知识点:
启动存储器(软盘,磁盘,U盘,光驱均可)第一个扇区称为启动区,他的最后两个字节,510,511字节固定为:0x55,0xAA。一个扇区固定为512字节。
—计算机首先从存储器读第一个扇区,如果他的最后两个字节是55aa,则此存储器为启动存储器(操作系统在其中),开始运行第一个扇区的启动程序;如果不是,则继续查找下一个存储器(软盘,光驱,U盘等)。
IPL:Initial Program Loader,启动程序加载器,将OS加载到内存中。 55aa:启动存储器
二、遇到的问题及解决方法
填写说明:分条目列出本次的实验过程中遇到的问题和解决方法(可注明是哪位同学帮忙解决问题),描述问题时应配上相关的截图和标记,描述解决方法时应先分析出现该问题的原因再讲解决方法,尽量详细。
1、 将镜像文件img保存后再用BZ二进制编辑器打开,怎么也编辑不了

解决方法:导致该问题的原因目前未知,解决方法为:我在网上另外下载了一个二进制编辑器,可以成功修改:

2、 本来要显示helloworld的页面出现了异常,如图

解决方法:导致该问题的原因是经查发现是镜像文件img写错(诶呀都怪pdf太模糊太多错,课本真是还是要的),解决方法为修改img文件
…………
三、程序设计创新点
填写说明:分条目列出本次实验过程中对教材的哪些部分进行了创新或者修改,写清楚为什么要这样做,这么做会得到怎样的结果等,附上关键代码和截图。
1、 其实我们可以直接修改二进制的img文件,但那有局限也不方便,所以修改润色后的汇编代码简单多了,通过换行和输出得到一个金字塔图标

2、 用虚拟机实现模拟操作系统的功能
安装了VirtualBox之后,我们新建一个虚拟机,新建一个虚拟机,分配好虚拟硬盘和内存,然后再打开虚拟机的“设置”“存储”,点击“增加控制器”,增加一个软盘控制器

就同样可以观察到我们写的代码的效果

四、实验心得体会
感觉这次实验就是完全按着作者走,只要理解了具体步骤的意义就好,主要是懂得了怎样利用处理镜像文件,可以用虚拟机的同时也可以用模拟器,似乎很方便快捷。这次课,主要还是对二进制代码还有点好奇,虽然汇编代码有讲到一点,但只是部分,希望以后能够明白。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值