2.编写主引导记录MBR

在上一篇博文中(自己写操作系统–开发环境的搭建与第1个操作系统(完全可复现)),提到了开发环境的搭建和第一个操作系统(其实就是MBR)。
这一篇继续编写MBR,但是开发环境有一点的小改动,是在Linux环境下的bochs中进行测试我们写好的MBR

好了,我们马上开始。

1. 首先先在Ubuntu中安装 bochs2.9.6。

sudo apt-get update //先升级一下,以免后续的安装出错
接下来的具体过程参考博文:https://blog.csdn.net/Sunnil/article/details/79243192。

2.编写mbr.S汇编文件并编译为bin文件

	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 boot.asm -o boot.bin

2.编写主引导记录MBR_第1张图片

3. 把bin文件写入虚拟软盘中

利用上一篇博文中的虚拟软盘。自己写操作系统–开发环境的搭建与第1个操作系统(完全可复现)

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

2.编写主引导记录MBR_第2张图片

4. 编写bochs配置文件

命名为bochsrc.conf

   megs:32
   
   romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
   
   vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest
   
   floppya:1_44=myOS.IMG,status=inserted
   
   boot:floppy
  
   log:bochs.out
  

其中第2、3行中的路径是根据BIOS-bochs-latest和VGABIOS-lgpl-latest的真实路径,可以在文件管理器中查找到。

5.在bochs启动自己编写的MBR

把虚拟软盘映像文件myOS.img 、配置文件bochsrc.conf 放至bochs2.9.6的安装目录里。然后执行命令

bochs -f bochsrc.conf
输入 -f 的目的是直接使用配置文件bochsrc.conf

2.编写主引导记录MBR_第3张图片
默认选择了第 6 项,直接回车。
2.编写主引导记录MBR_第4张图片

启动之后按提示 输入’c’就跳到MBR执行。

2.编写主引导记录MBR_第5张图片

你可能感兴趣的:(从0写操作系统)