30天自制操作系统(day1)

第1天:从计算机结构到汇编程序入门

**一、实验主要内容
1、内容1:**BZ.exe编辑器下载。这里我没有从书上的网站去找,而是在网上另外找到的编译器,网址为http://www.pc6.com/softview/SoftView_557368.html。直接选择本地下载,然后解压即可使用。点击BZ.exe可以直接使用,界面如下(太简洁了吧…)
30天自制操作系统(day1)
用他来打开一个helloos.img文件看一下:
30天自制操作系统(day1)
这里可以看到,最左边是地址栏;中间是我们输入的十六进制代码,两个一组;最右边是相应的字符。我们在手动输入的时候中间的空格是在显示的时候自动插入的。
注意,当我们想要编辑的时候需要将菜单-编辑-readonly两个都去掉在重新打开。

**2、内容2:**安装tolset。书上的是软盘方法,这里我们使用模拟器方法。首先找到tolset文件夹,打开之后在里面新建一个helloos0文件夹,把之前保存的helloos.img文件复制到这个文件夹里,在将tolse文件夹中找到z_new_w子文件夹打开,将里面的!cons_9x.bat和!cons_nt.bat这两个文件复制粘贴到helloos文件夹里。
30天自制操作系统(day1)
30天自制操作系统(day1)
然后在helloos里面新建一个txt文件,先命名为run.txt打开在里面输入
Copy helloos.img … \z_tools\qemu\fdimage0.bin

… \z_tools\make.exe -C … \z_tools\qemu
30天自制操作系统(day1)
保存之后更改文件名为run.bat,弹出窗口选是,按照同样步骤创建install.bat,输入内容为:
… \z_tools\ imgtol.com w a:helloos.img
30天自制操作系统(day1)
**3、内容3:**运行程序。在helloos文件夹中双击!cons_9x.bat或者!cons_nt.bat。我是!cons_nt.bat。出现运行行窗口,输入run指令就会弹出一个窗口显示hello,world
**4、内容4:**修改显示。在.img文件中,找到hello的第一个字符对应的位置。
30天自制操作系统(day1)
可以将其修改为我们想要的任意字符,当然不一定非要在中间的十六进制代码位置修改,可以直接在右面的字符上进行修改,更简单:
30天自制操作系统(day1)
30天自制操作系统(day1)
虽然能实现,但是可以看到有乱码,但最大长度有限制。经过测试,在U之前的可以进行显示,在U之后的即便有也不会进行显示。而且暂时不可以调整U的位置。
30天自制操作系统(day1)
30天自制操作系统(day1)
**5、内容5:**汇编程序。在光盘文件01_day\helloos1中的helloos.nas文件是作者用nask写出来的用到DB指令还有RESB指令源程序。我们只需要将helloos1文件夹复制到tolset文件夹中,用!cons打开输入asm,就可以生成helloos.img文件,在输入run运行该程序输出内容不变。在helloos2中包涵DB指令的新用法,可以直接用来写字符串,复制到tolset中可以显示同样结果,想要显示不同直接在显示部分进行修改即可
30天自制操作系统(day1)
30天自制操作系统(day1)
30天自制操作系统(day1)
下面是部分指令用法:
DB:“data byte”的缩写,往文件里直接写入1个字节的指令。
RESB:“reserve byte”的略写,空出字节,比如RESB 10就是空出10个字节的意思。
DW:“data word”的缩写,word指的是16位的意思(2个字节),与db指令类似功能。
DD:“data double-word”的缩写,double-word 表32位(4字节)。
**二、遇到的问题及解决方法
1、描述问题1:**运行时报错:
30天自制操作系统(day1)
30天自制操作系统(day1)
导致问题的原因:导致该问题的原因是“…”后面多加了一个空格
解决方法:将空格删除后成功
**2、描述问题2:**运行时报错:
30天自制操作系统(day1)
导致问题的原因:在编写代码的时候将一些代码的位置进行了更改
解决方法:改回
30天自制操作系统(day1)
30天自制操作系统(day1)
三、程序设计创新点
这个因为个人问题,不便于透露,可以指明方向——可不可以写一个汇编语言的循环代码呢?