上一回咱们已经写好了引导扇区代码,要开始运行了。那代码怎么运行呢?
汇编
计算机能理解的,不过是电压的大小。我们把高电平叫做1,低电平叫做0,用1和0的不同电路就搭建出一个计算机了(讲的不是很清楚,以后可能会做一个专栏讲计算机)。
但是0和1一般人是看不懂的,为了让人类能看懂,人们发明了汇编语言
汇编语言中将计算机代码编成了一个个助记符方便记忆。像ADD,MOV都是助记符
但是,计算机是看不懂助记符的,需要一个东西把助记符转换成机器语言,这个东西就是汇编器,而转换的过程就叫做汇编
作者最喜欢的汇编器是NASM,很方便,语法简单。为了防止一些读者懒得搜索,我给大家提供好了:https://download.youkuaiyun.com/download/PythonKingdomcit/92574656?spm=1001.2014.3001.5503
怎么用呢?
先把NASM的路径配置到path,如果不会的上网搜一下。然后再命令行输入nasm -f bin [filename] -o [filename]
回车等待编译完成……OK,完成了
虚拟机
怎么运行这个操作系统呢。很简单,直接烧录进U盘。不过以作者的水平,很容易把你家电脑搞报废。所以,就出现了运行在电脑上的电脑——虚拟机
作者推荐qemu,资源:https://download.youkuaiyun.com/download/PythonKingdomcit/92579063
还是配置环境变量,然后命令行输入qemu.exe -L . -m 32 -localtime -std-vga -fda [filename]。
弹出了一个窗口。不出意外可以看到hello,world。
跳出引导扇区
软盘有1.4兆的广阔天地,可我们却只能待在512字节的引导扇区里。可是后面的事情不是BIOS管的,我们只能自力更生
读盘
用于BIOS很懒,我们需要自己把512字节外的内容读进来。BIOS为我们准备好了读软盘的中断,具体介绍如下:
INT 0x13
磁盘读写,扇区校验和寻道
AH:0x02读盘,0x03写盘,0x04校验,0x0c寻到
AL:处理对象的扇区数
CH:柱面号&0xff
CL:扇区号(0-5位)|(柱面号&0x300)>> 2
DH:磁头号
DL:驱动器号:0x00软盘,0x80硬盘
ES:DS:缓冲地址
啥是柱面,磁头?
软盘结构
拆开软盘可以看到,一圈一圈环状的结构,这就是柱面。软盘一共有80个柱面
软盘两面都可以存储数据,因此需要两个磁头读取
我们又把软盘的圆环分成几个等分,每一份叫做扇区。软盘一共18个扇区
缓冲地址
从软盘读到哪里呢?这就是缓冲地址。它是一个内存地址
如果用一个寄存器表示内存地址,那么只能访问64K的内存,剩下的浪费了。人们设计了段寄存器。用ES:BX,其实就是ES*16+BX。虽然只能访问1兆,但目前来看足够用了。
时候不早了,咱们下期再讲~
417



被折叠的 条评论
为什么被折叠?



