Bochs加载VHD文件作为主引导设备

本文讲述了作者如何通过8086汇编在VirtualBox中测试主引导扇区,随后转向Bochs进行单步调试的过程。详细介绍了配置Bochs、加载VHD文件以及解决常见问题的步骤。涉及技术包括8086汇编、BIOS、主引导扇区和虚拟机调试。
摘要由CSDN通过智能技术生成

最近在尝试通过8086汇编编写一个简单的主引导扇区,并在屏幕上打印一些字符。

相关的汇编代码(使用nasm)如下,已经写入到了VHD文件中,并在VirtualBox中完成测试。

mov ax, 0xb800
mov es, ax        ;将指向文本模式的显示缓冲区段地址放入es中

;设置数据段地址为当前代码段地址
mov ax, cs
mov ds, ax

;清空屏幕内容(防止某些BIOS在jump至0x7c00前不会提前清理屏幕缓冲区)
mov cx, 2000
mov bx, 0
clear_screen:
mov byte [es:bx], 0
mov byte [es:bx+1], 0x07
add bx, 2
loop clear_screen


;显示字符串“Hello, World!”
mov cx, 0
;ax表示字符顺序,dx表示要写入的显示缓冲区地址
mov ax, 0
mov dx, 0
mov bx, 0
print_str1:
mov bx, ax
mov cl, [bx+str1+0x7c00]
mov bx, dx
mov byte [es:bx], cl
mov byte [es:bx+1], 0x07
add ax, 1
add dx, 2
;最后让cx自增,因为字符串以0结尾。
add cx, 1
loop print_str1

; 无限循环
infi:jmp near infi

str1 db "Hello, World!",0

jmp $

times 510-($-$$) db 0
db 0x55,0xaa

但是我们知道,VirtualBox并不能单步调试,因此需要在Bochs中加载VHD该文件作为主引导设备。

由于Bochs的设置比VirtualBox复杂得多,因此在这里进行记录。

首先,想要在Bochs中进行单步调试,要使用其安装目录下的bochsdbg.exe。

 启动后,作如下配置:

 

 

完成如上配置后, 记得将配置文件保存,下次通过“Load”重新加载。

 然后即可成功引导并启动VHD文件中的主引导扇区。

 如果启动过程中出现“could not open hard drive image file”,见这篇博客:

(36条消息) 《操作系统真xiang还原》阅读实践问题记录 bochs [HD ] ata0-0: could not open hard drive image file ‘hd60M.img‘_晰烟的博客-CSDN博客

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没头发的米糊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值