如何验证编写的主引导程序?
解决方案设计:
将汇编源码编译为二进制机器码(nasm)
建立虚拟盘(bximage)
将二进制代码写入虚拟盘起始位置(dd)
在虚拟机中将虚拟盘做为启动盘执行(vmware)spa
就算编译获得了二进制码,如何将二进制的机器码拿到硬件上面去执行呢?
由于没有操做系统,因此必需要使用实际的存储介质了,比方说光盘。将咱们编译获得的二进制码刻录到光盘中,而后让计算机从光盘来启动。可是这样作太麻烦了。
须要使用一个简单的方法,此时虚拟机就能够派上用场了。既然是虚拟机,就干脆完全一点,建立一个虚拟盘。让虚拟机去读取虚拟盘中的二进制码。这样的话,就方便了。
如何将编译获得的二进制码写到一张虚拟盘中?
可使用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中断使用硬件功能
主引导程序运行于实模式(地址都是实际的物理地址)源码