前言:环境介绍
电脑:Macbook Air 2014年早期版 系统:OS X 10.10.3
虚拟机:由于在Mac上编译Bochs一直不通过,原因在sourceforge上有说:sourceforge.net/p/bochs/bugs/1344 /1360,这两个地址说他们的程序员没有开发mac下的,所以会编译不通过。我不想多折腾,用VirtualBox,同时也是免费的。去官网下载VirtualBox,双击安装就行。同时,VirtualBox支持调试,在网上搜也有很多关于调试的文章,这里不贴地址。
源码获取:作者在书的最后给出了源码的地址,如果买了书的同学可以去下载。
生成img文件:书中使用的是Bochs自带的bximage,由于我们没有编译成功,使用dd命令也是非常的方便
#生成一块1.44M空软盘命令。dd if=/dev/zero of=os.img bs=512 count=2880 conv=notrunc
挂载img文件:在Linux可以使用mount命令, 但是在mac下需要-t选项,一直搞不清楚FAT12对应的代号,可能没有,后来发现了这么一个命令
#挂载img文件hdiutil mount os.img#命令会有输出,将文件挂载在哪个位置,一般都是在/Volumes/文件夹下hdiutil unmount /Volumes/path
Dos下进入不同的盘:
#直接输入盘符加:号B:第一章:一个引导程序
最开始介绍了一个是多行的代码,用于引导软盘进入系统
org 07c00h; 告诉编译器程序加载到7c00处mov ax, csmov ds, axmov es, axax, BootMessageax, dl, 0int db “Hello, OS world!”times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为512字节dw 0xaa55; 结束标志
对于上面的代码,不做过多的描述,第一行是跳转到7c00处,将控制权移交给系统,不再是BIOS,接着初始化几个寄存器之后调用字符显示函数,然后进入死循环。最后是填充数据,写入结束标志。
讲述一些NASM汇编中的规则,更详细内容去看官网手册: 对变量加[],取值,不加表示地址; $:当前行被汇编后的地址 $$:当前段section被汇编之后的起始地址。
好的,到现在,如果你和我一样的系统,一样的硬件,你应该已经全部搞定书上的操作实例了。 那么接下来进入保护模式。
,只要看得开放得下,何愁没有快乐的春莺在啼鸣,