多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
上次我们说了代码,这次我们说说怎样看到实验结果。 首先编译源文件(我的源文件就在当前路径下,a盘和c盘在上一级目录下): nasm -f bin c08_mbr.asm -o c08_mbr.bin nasm -f bin c09_1.asm -o c0901.bin 然后将bin文件写入a盘和c盘 dd if=c08_mbr.bin of=../a.img dd if=c0901.bin of=../c.img bs=512 seek=100 conv=notrunc 注意:也许你需要根据自身的情况修改路径   好了,运行Bochs 可是结果令人失望,不管我怎么尝试,都看到了如下的图 [![bochs_fail](https://box.kancloud.cn/2016-02-29_56d3a8f8bfcfa.jpg "bochs_fail")](http://img.blog.csdn.net/20160103005657960) 只能看到屏幕中间的“@”在闪烁,可是根本看不到时间。 ![哭泣的脸](https://box.kancloud.cn/2016-02-29_56d3a8f857ea0.jpg) ![哭泣的脸](https://box.kancloud.cn/2016-02-29_56d3a8f857ea0.jpg) ![哭泣的脸](https://box.kancloud.cn/2016-02-29_56d3a8f857ea0.jpg) 我也试图调试一下,在中断处理程序里面打了断点,可是中断似乎进不去。 无法运行出正确的结果,也许不是我们错了,或许是工具的问题。毕竟我用的是win7+vmware+ubuntu+bochs,而不是一个真实的环境。   好吧,既然这条路走不通,那我就换一条路吧。是不是vmware的问题呢?那我们用virtualBox试一试。 于是,我打造了win7+virtualBox+ubuntu+bochs,可是和上面的结果完全一样,还是失败了。看来不是vmware的问题。 真的是山穷水尽了吗?我又想了一个方法,就是作者在第四章推荐的方法,virtualBox+VHD文件; 说干就干,首先,我们需要在virtualBox上创建一台虚拟机。   第1步:启动VirtualBox,点击【新建】 [![vb-1](https://box.kancloud.cn/2016-02-29_56d3a8f9000be.jpg "vb-1")](http://img.blog.csdn.net/20160103005704989) 图中的名称是自己起的,我的叫“hello_asm”; 类型和版本也不重要,很多人都会误解,以为VirtualBox会根据我们的选择来安装一个现成的操作系统。其实,并不是这样,让我们选择操作系统的唯一目的,就是根据我们的选择,在后面的步骤中为我们提供合理的硬件配置。实际上,我们不打算安装任何操作系统,所以,我选择了Other。好的,我们点击【下一步】;   第2步:分配内存大小 [![vb-2](https://box.kancloud.cn/2016-02-29_56d3a8f92a269.jpg "vb-2")](http://img.blog.csdn.net/20160103005714944) 内存大小就根据自己主机的物理内存来配置吧,这里我选了512M,然后点击【下一步】;   第3步:创建虚拟硬盘(或者用作者提供的) [![vb-3](https://box.kancloud.cn/2016-02-29_56d3a8f954b6f.jpg "vb-3")](http://img.blog.csdn.net/20160103005724790) 这里可以用作者提供的VHD文件,也可以自己创建。为了不失一般性,我们选择‘现在创建虚拟硬盘’,点击【创建】   第4步:选择虚拟硬盘的文件类型 [![vb-4](https://box.kancloud.cn/2016-02-29_56d3a8f98209e.jpg "vb-4")](http://img.blog.csdn.net/20160103005735590) 这里一定要选择VHD,因为我们打算用作者提供的工具(fixvhdwr.exe),然后点击【下一步】;   第5步:选择虚拟硬盘的类型 [![vb-5](https://box.kancloud.cn/2016-02-29_56d3a8f9a7542.jpg "vb-5")](http://img.blog.csdn.net/20160103113346601) 一定要选择“固定大小”,因为本书的配套工具只支持固定大小的。然后点击【下一步】   第6步:选择虚拟硬盘的位置和大小 [![vb-6](https://box.kancloud.cn/2016-02-29_56d3a8f9dcc99.jpg "vb-6")](http://img.blog.csdn.net/20160103113357408) VHD文件位置是自己设置的,一定要放在一个你可以找到的地方。其实,放在作者提供的配书工具所在的文件夹是最方便的。我这里放在D盘。 另外,还要选择虚拟硬盘的大小,我选了2GB;作者的要求是,一定要大于50MB![大笑](https://box.kancloud.cn/2016-02-29_56d3a8fa14f3c.jpg) ,然后点击【创建】;   通过以上6步,我们的虚拟硬盘就创建好了。   下面的任务是把我们的bin文件写入虚拟盘,最后看一下结果。 第1步:打开作者的配书工具——fixvhdwr.exe [![vb-8](https://box.kancloud.cn/2016-02-29_56d3a8fa25718.jpg "vb-8")](http://img.blog.csdn.net/20160103113410399) 第2步:选择虚拟磁盘文件 [![vb-9](https://box.kancloud.cn/2016-02-29_56d3a8fa4d943.jpg "vb-9")](http://img.blog.csdn.net/20160103113416235) 找到我们刚才保存虚拟硬盘的目录,选择哪个VHD文件,然后【下一步】; [![vb-10](https://box.kancloud.cn/2016-02-29_56d3a8fa6ec9a.jpg "vb-10")](http://img.blog.csdn.net/20160103113420127) 第3步:选择数据文件 [![vb-11](https://box.kancloud.cn/2016-02-29_56d3a8fa8f0fa.jpg "vb-11")](http://img.blog.csdn.net/20160103125455371) 找到我们编译好的c08_mbr.bin文件   第4步:设置起始LBA扇区号,并写入文件 [![vb-12](https://box.kancloud.cn/2016-02-29_56d3a8faa9427.jpg "vb-12")](http://img.blog.csdn.net/20160103125459515) 因为是启动文件,所以我们选择0,然后点击【写入文件】;之后可以看到:   [![vb-13](https://box.kancloud.cn/2016-02-29_56d3a8fac5f8b.jpg "vb-13")](http://img.blog.csdn.net/20160103125502524) 最后点击【完成】; 通过上面4个步骤,我们就把一个.bin文件写入VHD文件了。 用同样的方法,我们可以把c0901.bin(用户程序)写入逻辑扇区100(起始逻辑扇区号一定要和代码中的保持一致);   下面,我们启动虚拟机,看看结果吧: [![vb-14](https://box.kancloud.cn/2016-02-29_56d3a8fadccdc.jpg "vb-14")](http://img.blog.csdn.net/20160103125507098) 启动虚拟机,我们终于看到了屏幕中央闪烁的时间!   经过上面的折腾,我觉得不是VMware的问题,也不是VirtualBox的问题,很可能是Bochs的问题! 心血来潮,我想到了我安装的Bochs不是最新版本,也许我可以弄个最新版本试一试。 于是我在VMware上安装了Bochs-2.6.8,按照以前的方法,得出的结果又惊喜又困惑,请看图: [![2.6.8_result](https://box.kancloud.cn/2016-02-29_56d3a8fb073d8.jpg "2.6.8_result")](http://img.blog.csdn.net/20160103125511840) 看到了吗?屏幕中央有时间了! 遗憾的是,这个时间跳动得太快了,也就是说这个时钟走得特别快,根本不是每秒一次的更新频率。我想这还是Bochs的问题吧。   好了,今天就到这里,下次再见![吐舌鬼脸](https://box.kancloud.cn/2016-02-29_56d3a8fb25553.jpg) !