自己动手写操作系统学习笔记(一)

早就想抽时间系统的学习一下于渊写的《自己动手写操作系统》,但始终没空,现在忙活一年,年底终于有点空闲,今天终于把书里的第一个例子在windows下搞成功.这里把实验步骤记录一下.

实验全部在win7环境下进行,用到软件版本和下载地址为:

Win64位Bochs 下载地址:

http://dl-sh-ctc-2.pchome.net/0f/1a/Bochs-2.6.8.rar?key=fd0adc6b93959ada8d14dde2e9eeb81c&tmp=1482108920149

nasm64位下载地址:

http://www.nasm.us/pub/nasm/releasebuilds/2.12.03rc1/win64/nasm-2.12.03rc1-installer-x64.exe

dd for windows下载地址:

http://o1.acbfds.cn/v1/dd-0.6beta3.rar


实验步骤

1、编写boot.asm文件

首先仿照书上写一个boot.asm,代码如下

         org   07c00h                      ;告诉编译器程序加载到7c00处

         mov ax, cs

         mov ds, ax

         mov es, ax

         call   DispStr                      ;调用显示字符串例程

         jmp  $                        ;无限循环

DispStr:

         mov ax, BootMessage

         mov bp, ax                        ;ES:BP = 串地址

         mov cx, 16                        ;CX = 串长度

         mov ax, 01301h               ;AH = 13,  AL = 01h

         mov bx, 000ch                  ;页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)

         mov dl, 0

         int    10h                    ;10h 号中断

         ret

BootMessage:                 db    "Hello,OS world!"

times      510-($-$$)       db    0       ; 填充剩下的空间,使生成的二进制代码恰好为512字节

dw 0xaa55                               ; 结束标志

 

然后在命令行下进行编译(编译之前记得把nasm.exe和dd.exe的安装路径加入path系统变量中)

nasm boot.asm -o boot.bin

成功的话在本目录下生成一个boot.bin文件


编译过程如下图所示




2. 生成.img文件

具体编译命令为

dd if=boot.bin of=a.img bs=512 count=1  conv=notrunc

 

运行效果如下图

自己动手写操作系统学习笔记(一)_第1张图片


3. 编写bochs配置文件

编写一个bochs.bxrc文件内容为

#bochs 2.6.8的语法发生了变化,导致书中的文件无法使用

#现在的本配置文件方案来自http://blog.csdn.net/furzoom/article/details/52484413

 

# how much memory the emulated machine willhave 

megs: 32 

 

# filename of ROM images 

# BIOS已经修改,地址可以不加,可以根据文件大小进行推断,如里加地址要与文件大小相匹配 

romimage:file=$BXSHARE/BIOS-bochs-latest 

vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest 

 

# what disk images will be used  

# 配置镜像名 

floppya: 1_44=a.IMG, status=inserted 

 

# choose the boot disk. 

boot: a 

 

# where do we send log messages? 

log: bochsout.txt 

 

# disable the mouse, since Finix is textonly 

mouse: enabled=0 

 

# enable key mapping, using US layout asdefault. 

# 键盘的映射方式也改变了 

keyboard:keymap=$BXSHARE/keymaps/x11-pc-us.map


4.启动bochs ,画面如下所示

自己动手写操作系统学习笔记(一)_第2张图片


然后单击load按钮,选中刚才的bochs.bxrc文件,再单击start 按钮,就可以出现一个模拟器窗口,看到运行效果,

如下图绿色画圈出所示。注意这个模拟器窗口无法关闭,想退出的话只能关闭原始的bochs窗口,则两个窗口一起关掉.至此实验结束


自己动手写操作系统学习笔记(一)_第3张图片

你可能感兴趣的:(操作系统,引导扇区,bochs,nasm)