为了测试我们搭建的开发环境,我们现在来做一个第一个实验,写一个简单的引导扇区,并让它在虚拟机里跑起来。
一.先在某个文件夹(比如:os)中建立文件boot.asm,如下:
org 0x7c00
mov ax,cs
mov ds,ax
mov es,ax
call ShowStr
jmp $
ShowStr:
xor esi,esi
mov esi,BootMessage
.loop:
mov al,byte[esi]
cmp al,0
je .end
mov ah,0x0A
mov bx,0x000c
mov cx,1
int 10h
xor eax,eax
xor ebx,ebx
xor edx,edx
mov ah,0x03
mov bh,0
int 10h
inc dl
mov ah,0x02
int 10h
inc esi
jmp .loop
.end:
ret
BootMessage:
db "Hello,world",0
times (510-($-$$)) db 0
dw 0xaa55
二.用nasm编译,命令如下:
nasm –o boot.bin boot.asm
三.建立软盘映像
终端输入如下命令:
bximage(回车)
1(回车)
fd(回车)
(回车)
(回车)
接着,我们再利用linux下的dd命令,将boot.bin写入软盘映像a.img,命令如下:
dd if=boo.bin of=a.img bs=512 count=1 conv=notrunc
四.建立bochs的配置文件,如下:
#配置文件注释是‘#’
#指定内存大小为32MB
megs:32
#bochs安装文件的BIOS&VGABIOS路径,这个路径要看自己的电脑
romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
#制定要使用的软盘
floppya:1_44=a.img,status=inserted
#使用软盘启动
boot:floppy
#不使用鼠标
mouse:enabled=0
#键盘相关,要看自己电脑上的路径
keyboard_mapping:enabled=1,map=/usr/local/share/bochs/keymaps/x11-pc-us.map
#存放log文件的文件
log:bochsout.txt
五.启动bochs
在终端输入命令:
bochs –q
来启动bochs,可以看到bochs成功运行,如下图所示:
可以看出,我们的系统正在正常运行。