Hello,DTOS!(下)

Posted -glb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hello,DTOS!(下)相关的知识,希望对你有一定的参考价值。

如何验证编写的主引导程序?
解决方案设计:
将汇编源码编译为二进制机器码(nasm)
创建虚拟盘(bximage)
将二进制代码写入虚拟盘起始位置(dd)
在虚拟机中将虚拟盘作为启动盘执行(vmware)

就算编译得到了二进制码,如何将二进制的机器码拿到硬件上面去执行呢?
因为没有操作系统,所以必须要使用实际的存储介质了,比方说光盘。将我们编译得到的二进制码刻录到光盘中,然后让计算机从光盘来启动。但是这样做太麻烦了。
需要使用一个简单的方法,此时虚拟机就可以派上用场了。既然是虚拟机,就干脆彻底一点,创建一个虚拟盘。让虚拟机去读取虚拟盘中的二进制码。这样的话,就方便了。
如何将编译得到的二进制码写到一张虚拟盘中?
可以使用dd命令进行完成

实验原材料
nasm
  .nasm boot.asm -o boot.bin
bximage 创建虚拟软盘,-fd代表的就是创建的虚拟软盘,虚拟软盘的大小为1.44M,-q表示我们不需要进行交互,一次性创建出a.img就可以了。
  .bximage a.img -q -fd -size=1.44
-dd 将二进制的机器码写入虚拟软盘
  dd if=boot.bin of =a.img bs=512 count=1 conv=notrunc

if表示输入,输入就是我们编译得到的二进制机器码;
of表示输出,输出到a.img这个虚拟软盘上去;
bs表示我们写入时每个单元的大小,在这个地方我们只需要写512个字节就可以了。因此用count=1来指定一个512字节;
conv=notrunc表示连续的写入,不要有任何的间隔
以上就是实验所用到的命令。

总结:

主引导程序的代码量不能超过512字节
主引导程序需要使用汇编语言开发
主引导程序中可以通过Bios中断使用硬件功能
主引导程序运行于实模式地址都是实际的物理地址

以上是关于Hello,DTOS!(下)的主要内容,如果未能解决你的问题,请参考以下文章

2.Hello,DTOS

2. Hello,DragonOS

Hello.class所在路径下, 输入命令:java Hello.class,会出现什么结果,为什么?

RabbitMQ文档翻译——Hello World!(下)

ubuntu下C程序的编辑编译运行

Linux下执行.sh文件