Bochs的使用

工作配置

20 行代码的一个"操作系统"

  • 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, 17			; 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	"I love you,Anita!"
    times 	510-($-$$)	db	0	; 填充剩下的空间,使生成的二进制代码恰好为512字节
    dw 	0xaa55				; 结束标志
    
  • 把上面这段代码用NASM编译一下
    nasm boot.asm -o boot.bin
    在当前目录下面会生成一个512B的boot.bin。一个"操作系统就已经完成了"

使用bximage创建一个软盘映像

  • 进入Bochs的安装目录,启动命令行(cmd或powershell)
  • 画横线的表示要手动输入,箭头表示直接按回车键就好了
    在这里插入图片描述
  • 这样就会在当前目录生成a.img
    在这里插入图片描述

使用Cygwin将引导扇区写进软盘

  • 运行Cygwin.bat,输入命令
    dd if=刚才生成.bin文件的目录(boot.bin) of=生成软盘映像文件的目录(a.img) bs=512 count=1 conv=notrunc
    
  • 在俺这里,俺把boot.bin文件和a.img都放在了bochs的安装目录,所以俺把上面那条命令写成了
    dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
    
    在这里插入图片描述

使用Bochs启动刚刚写好的"操作系统"

  • Bochs的配置文件bochsrc,保存在Bochs的安装目录下
    在这里插入图片描述
  • bochsrc文件内容
    把所有的$BXSHARE都换成Bochs的安装目录
    megs:32
    
    romimage:file=$BXSHARE/BIOS-bochs-latest
    vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest
    
    floppya:1_44=$BXSHARE/a.img,status=inserted
    
    boot:floppy
    
    log:bochsout.txt
    
    mouse:enabled=0
    
    keyboard: keymap=$BXSHARE/keymaps/x11-pc-de.map
    
  • 打开命令行(cmd或者powershell),运行Bochs
    .\bochs.exe -f bochsrc
    
    在这里插入图片描述
    在这里插入图片描述
  • 成功啦!😃
  • 还有一件事!
    如果你输入一个不带任何参数的Bochs并执行之,那么Bochs将在当前目录顺序寻找以下文件作为默认配置文件

    .bochsrc
    bochsrc
    bochsrc.txt
    bochsrc.bxrc(仅对Windows有效)

从硬盘启动

  • 配置文件
    megs:32
    
    romimage:file=E:/Bochs/Bochs-2.6.11/BIOS-bochs-latest
    vgaromimage:file=E:/Bochs/Bochs-2.6.11/VGABIOS-lgpl-latest
    
    # 指定我们使用哪个文件作为软盘镜像
    # floppya:1_44=E:/Bochs/Bochs-2.6.11/freedos.img,status=inserted
    # floppyb:1_44=E:/Bochs/Bochs-2.6.11/pm.img,status=inserted
    # boot:floppy 从软盘启动
    # 改为从硬盘启动。我们写的人格代码都将直接写在硬盘上,所以不会再有读写软盘的操作
    boot: disk
    
    
    # 设置日志文件的输出
    log:bochsout.txt
    
    # 关闭鼠标,并打开键盘
    mouse:enabled=0
    keyboard:keymap=E:/Bochs/Bochs-2.6.11//keymaps/x11-pc-us.map
    
    # 硬盘设置
    ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
    # 这个是从下面创建好硬盘映像中复制来的
    ata0-master: type=disk, path="hd60M.img", mode=flat
    
    # 下面的是增加的bochs对gdb的支持,这样gdb便可以远程连接到此机器的1234端口调试了
    # gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0
    
  • 创建一个硬盘映像
    在这里插入图片描述
  • 把倒数第二句话复制到配置文件中,在上面已经有了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值