身体、心理等各种原因,停滞住了两个月,没有学习,没有写文章,为了恢复状态每天都在睡觉休息,揽了一些小型比赛调整自己“强迫”自己学习,目前仍然有些低烧,还在慢慢调整,努力开始往起捡专业课以及考研复习,更新文章较慢,给关注我的新老朋友道声抱歉~
从零开始制作,开发操作系统(一)—— 汇编语言的编写以及映像文件的制作
-
-
-
- 【更新日志】
-
-
- 平台/工具
- 汇编语言编写
-
- 初步编写
- 进一步改写
- 对应二进制文件
- QEMU虚拟器运行
【更新日志】
最近更新:
从这里开始就要着手编写操作系统啦,我们知道计算机能直接识别的只有0/1码这样的二进制机器语言,而为了方便记忆和识别用助记符来标识指定的0/1序列,出现了汇编语言。操作系统的开发离不开汇编语言,这里桐小白就直接用汇编语言开始编写啦,当然刚开始的文件很简单,也可以直接用二进制/十六进制来写,桐小白将两种文件的编写以及相关内容都进行总结啦,而对于计算机语言的相关内容桐小白在之前的文章里有写到过,就暂时不在这里做过多解释啦,相关内容详细可以见桐小白专业基础专栏文章《计算机语言处理相关知识要点区分汇总》
平台/工具
QEMU虚拟器: 由于操作环境的限制,这里使用QEMU虚拟器进行实验实践。
QEMU是一套由法布里斯·贝拉所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛
QEMU有两种主要运作模式:用户模式(User mode模拟模式)和系统模式(System mode模拟模式)
- User mode模拟模式能启动那些为不同中央处理器编译的Linux程序
- System mode模拟模式能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为跨平台编写的程序进行测试及除错工作变得容易。其亦能用来在一部主机上虚拟数部不同虚拟电脑
汇编语言编写
【这里桐小白就直接用汇编语言进行程序的编写啦,会对程序逻辑进行必要的总结,对用到的重要指令进行归纳和说明,但是对于汇编语言的语法、指令、机器码等具体知识桐小白就不在这里赘述啦,详细可以见桐小白微机原理与接口技术专栏的文章以及计算机组成原理专栏的《指令系统总结——基本知识要点汇总》文章、《中央处理器总结——基本知识要点汇总》的微程序控制器部分】
下面就直接开始动手进行编写啦,桐小白在之前有简单学习过汇编语言相关知识,程序比较简单也写明了注释,暂时就不过多解释代码含义啦
PS:对于操作系统的开发,启动区的程序和磁盘映像文件往往是分开制作的,由于刚刚起步,编写的映像文件较小,暂时就合成一个文件来写啦
初步编写
汇编指令说明
;是注释命令
DB——data byte的缩写,即往文件里直接写入1个字节(8位数据)的指令
DW——data word的缩写,即往文件里直接写入2个字节(16位数据)的指令,高8位数据字节存入高地址字节中,而低8位数据字节则存入低地址字节中
RESB——reserve byte的缩写,用于预留出一部分空间(空出来的地址上会自动填0x00),如 从现在的地址开始空出十个字节,语句为RESB 10
$ 是预定义符 ,等价于当前正汇编到的段的当前偏移值,如
- jmp $+3 表示要向前跳转到距离这条指令3个字节的地方
- jmp $-3 表示要向后跳转到距离这条指令3个字节的地方
- RESB 0x1fe-$ 表示从当前直到0x001fe地址单元见的空间均预留出来,即填入0x001fe
其它说明
TAB=4——制表键[TAB]的宽度
FAT12格式——DOS时代就开始使用的文件系统(File System),直到2009年仍然在软盘上使用
IPL——initial program loader的缩写,即启动程序加载器。由于启动区MBR只有512字节,往往是存放不下整个操作系统的,因此启动区存放的代码程序的主要作用是告诉计算机到硬盘的哪一个位置去找操作系统。这个用于加载操作系统的加载程序就是启动程序加载器,有时也直接将启动区称为IPL
进一步改写
汇编指令说明
entry、putloop、fin、msg——均是用于指定汇编程序的入口点,是一个标签的声明
ORG——定义程序或数据块的起始地址
JMP——无条件跳转指令,可转到内存中任何程序段。转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出
MOV——数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送(复制)到目标地址
ADD——加法指令
CMP——比较指令,对操作数之间运算比较,根据结果设置相关的条件标志位(SF、ZF、CF、OF)
JE——条件跳转指令,如果ZF标志位为0则跳转到指定的地址
INT——软件中断指令,可以调用不同的函数
HLT——处理器暂停指令,使程序停止运行,处理器进入暂停状态,不执行任何操作,不影响标志
对应二进制文件
持续更新中……
我是桐小白,一个摸爬滚打的计算机小白
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!