全程需要的所有工具与使用

我是介绍工具的顺序来介绍每一步要干什么,

bochs有win7的镜像 bochs教程win7镜像_操作系统


点这个,然后安装,安装目录我是放在D盘下的

bochs有win7的镜像 bochs教程win7镜像_二进制文件_02


此时注意,我们是通过cmd打开的。

bochs有win7的镜像 bochs教程win7镜像_官网_03


下方键入cmd,然后点击命令提示符。

bochs有win7的镜像 bochs教程win7镜像_文件写入_04


本来还想解释一下cd啥的,算了,都写OS了,我这废话多余了。记住最后这个cd后面的目录就是我们把bochs安装到的位置,上面第二张截图中也有。

bochs有win7的镜像 bochs教程win7镜像_bochs有win7的镜像_05


键入该命令,使用bximage创建软件映像文件

bochs有win7的镜像 bochs教程win7镜像_二进制文件_06


bochs有win7的镜像 bochs教程win7镜像_文件写入_07


然后再到bochs所在文件夹,看见多了一个a.img。好,此时我们已经创建了一个空的软盘映像文件

bochs有win7的镜像 bochs教程win7镜像_二进制文件_08


用二进制文件编辑器查看,里面全都是0.注意这个二进制查看器不重要;现在第一个工具暂时介绍完。工具2——nasm:NASM官网链接

bochs有win7的镜像 bochs教程win7镜像_文件写入_09


bochs有win7的镜像 bochs教程win7镜像_文件写入_10


bochs有win7的镜像 bochs教程win7镜像_二进制文件_11


bochs有win7的镜像 bochs教程win7镜像_文件写入_12


然后就是安装了,选择安装到的位置

bochs有win7的镜像 bochs教程win7镜像_二进制文件_13


我的位置,复制这个链接

bochs有win7的镜像 bochs教程win7镜像_二进制文件_14


右击这个选择最下面的属性。

bochs有win7的镜像 bochs教程win7镜像_二进制文件_15

bochs有win7的镜像 bochs教程win7镜像_操作系统_16


bochs有win7的镜像 bochs教程win7镜像_文件写入_17


注意这里是系统变量,点击path,然后

bochs有win7的镜像 bochs教程win7镜像_二进制文件_18


bochs有win7的镜像 bochs教程win7镜像_文件写入_19


然后一路确定

bochs有win7的镜像 bochs教程win7镜像_bochs有win7的镜像_20

再次打开cmd,键入指令可以看见配置成功

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				; 结束标志

然后创建一个txt文件,取名为boot,将代码保存进去。然后把扩展名修改位asm。关于代码中为何前面有org 07c00h,这个我想后面再说,在这里你们可以看一下现象即可,不过这需要汇编的知识,建议学下汇编,8086的即可

bochs有win7的镜像 bochs教程win7镜像_二进制文件_21


bochs有win7的镜像 bochs教程win7镜像_操作系统_22

然后利用cmd跳到你这个boot.asm所在的文件夹,执行nasm指令。执行之后会有

bochs有win7的镜像 bochs教程win7镜像_文件写入_23

这个.bin文件

注意这里你的这个bin文件可能会打不开,就是禁止访问,而且报出提示之后会消失。那是因为Windows defender 把他当病毒删了

bochs有win7的镜像 bochs教程win7镜像_操作系统_24

比如这样,此时我们需要暂时关闭Windows defender

bochs有win7的镜像 bochs教程win7镜像_bochs有win7的镜像_25


bochs有win7的镜像 bochs教程win7镜像_bochs有win7的镜像_26


bochs有win7的镜像 bochs教程win7镜像_官网_27


再打开这个bin文件可以看到汇编语言文件被汇编成的二进制文件里面的内容。

然后我们再把这个bin文件复制到之前我们创建的a.img软盘映像文件所在的目录下

bochs有win7的镜像 bochs教程win7镜像_操作系统_28


接下来我们就要把这个boot.bin文件写入到我们之前制作的空的软盘映像文件中了。此时我们需要一个新的工具:Cygwin工具3——Cygwin:官网下载地址

bochs有win7的镜像 bochs教程win7镜像_操作系统_29


安装就不想说了,给你们个教程地址:Cygwin安装教程

bochs有win7的镜像 bochs教程win7镜像_二进制文件_30


然后进入存放bochs文件所在的地方

bochs有win7的镜像 bochs教程win7镜像_操作系统_31

在此目录下键入指令

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

bochs有win7的镜像 bochs教程win7镜像_文件写入_32


此时已经将bin文件写入了此前空的a.img文件

bochs有win7的镜像 bochs教程win7镜像_文件写入_33


如图可以看到bin的内容被写入了a.img中最后就是使用Bochs启动刚刚写好的"操作系统"了

bochs有win7的镜像 bochs教程win7镜像_文件写入_34


对了,其实你可以新建一个bochsrc.txt,把代码输入进去之后保存,然后再把txt的扩展名删掉。代码如下

megs:32

romimage:file=$BXSHARE/BIOS-bochs-latest
vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest

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

boot:floppy

log:bochsout.txt

mouse:enabled=0

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

bochs有win7的镜像 bochs教程win7镜像_文件写入_35

效果如图

bochs有win7的镜像 bochs教程win7镜像_操作系统_36

然后再进入cmd,跳转到bochs的安装目录之下,执行图中的指令.\bochs.exe -f bochsrc

bochs有win7的镜像 bochs教程win7镜像_文件写入_37


勾选出弹框的对应项,然后点start.这个disk&boot不勾选也是可以的

bochs有win7的镜像 bochs教程win7镜像_bochs有win7的镜像_38


看,成功的输出了红色的hello,OS world!