30天自制操作系统第1天——从机器结构到汇编程序入门
一、开发工具介绍、安装、环境配置
接下来介绍的开发工具可能会让大家直接傻眼,一开始的开发我们既不使用C语言,也不使用汇编语言,而是使用二进制编辑器,有些同学可能就会觉得完蛋,废了。其实我也是这样感觉的,我也准备好迎接一场史诗性的挑战了。
下载链接:https://pan.baidu.com/s/1aDxkpJ2uPt5XKr0kPlPpaA
提取码:uhzy
启动页面:
保存文件名称建议名称:helloos.img
光盘启动盘:
链接:https://pan.baidu.com/s/1kG_XXmB7wo4CMaKOMkgv7w
提取码:69x9
将里面的tolset文件夹移到任意一个位置,只要这个盘中有100MB即可(最好自己创建一个分盘出来,如果不会自己找教程)
UltraISO
链接:https://pan.baidu.com/s/1uqb6EBNmSlHyCVx5i2ehJg
提取码:jwqq
汇编程序环境配置
官网下载:QEMU for Windows (需要配置环境变量,非常简单,不懂自己查)
官网下载: NASM for Windows (需要配置环境变量,非常简单,不懂自己查)
官方下载: MSYS2 (需要配置环境变量,非常简单,不懂自己查)
VSCode + Hex Editor + x86 and x86_64 Assembly
来个例子(无需弄明白,先看看效果):
光盘中已经将工具代码写好,由于目前也看不太懂,因此可以采取下列步骤直接进行(非常粗暴,后续详细代码会一一详细解说)
第一步:将”OS\projects\01_day\helloos1”文件夹复制到”OS\tolset”文件夹下
第二步:“OS\tolset\helloos1”文件夹,将helloos.nas文件内容修改为
1 |
|
第三步: 双击!cons_nt.bat
(没有用再双击!cons_9x.bat
)
第四步: 弹出窗口中依次输入
1 |
|
出现以下窗口表示启动成功我们的helloos.img操作系统!!!
二、制作启动盘
第一步:准备一个U盘,里面的数据全部为空。
第二步:使用UltraISO软件,打开刚刚的helloos.img
第三步:
三、真机启动
接着就可以重启之后,然后从 BIOS 打开选择从**U盘
启动。如下图(待补充)**
四、基本讲解步骤(最好自己慢慢看)
P19~20
回到我们的最先介绍的二进制编码
工具,它实际上就是生成一系列比如说音乐、图片等等信息的二进制代码,一行就是32位,有多少行就有多少条指令。
只要你够牛逼,你遇到了过于付费的软件,但是又不想花钱,你也可以自己用这个编辑器自己编出一个软件。当然,这也是个不切实际的想法,即使你真有这么牛,你也会认为:哇,这个软件真值,这么便宜:laughing::laughing::laughing::laughing:
当然我们现在还是更加习惯于使用十六进制或者八进制。
五、初次体验汇编程序(环境配置见上)
使用汇编语言最大的好处:就是可以简化代码,可以将前面的近上万行的二进制代码转换为几十行代码
测试NASM配置
通过以下指令即可实现汇编语言转换为机器语言的16进制模式,也就是前面提到的img文件模式
1 |
|
测试QEMU
第一步:首先将dat1.img使用UltraISO
转换为软盘映像文件**(前面已经介绍过)**
第二步: 然后再在img当前目录打开cmd执行以下指令即可:
1 |
|
如下图(待补充)
六、知识点小补充
DB指令
- 往文件直接写入1个字节的指令。这个指令是程序员的杀手锏,有了这些
DB指令
可以用它做出任何数据(甚至程序), 所以说几乎没有任何汇编语言编不出的程序。其他语言很多最后都是转为汇编语言然后再由它转为机器语言提供给CPU识别执行; - 直接写字符串,汇编语言会自动查找字符串中每一个字符对应的编码,然后把它们一个一个字节排列出来;
RESB:
如果想要从现在的地址开始空出10个字节,就可以写为RESB 10
,相当于预约了10个字节。(大家可以想象成对号入座预定了10个连续的位置)
;为注释含义:
和C语言中的 //
一个含义
DW指令和DD指令:
word
相当于16位,即为2字节,double-word
相当于32位,即为4字节。
注意
RESB 0x1fe-$
的$
表示的是 我们这一行现在的字节数(其他含义)