[Orange‘s:一个操作系统的实现]第一天:环境配置

前言:环境介绍

电脑: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被汇编之后的起始地址。

好的,到现在,如果你和我一样的系统,一样的硬件,你应该已经全部搞定书上的操作实例了。 那么接下来进入保护模式。

,只要看得开放得下,何愁没有快乐的春莺在啼鸣,

[Orange‘s:一个操作系统的实现]第一天:环境配置

相关文章:

你感兴趣的文章:

标签云: