Bochs加载VHD文件作为主引导设备
Posted 没头发的米糊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bochs加载VHD文件作为主引导设备相关的知识,希望对你有一定的参考价值。
最近在尝试通过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”,见这篇博客:
以上是关于Bochs加载VHD文件作为主引导设备的主要内容,如果未能解决你的问题,请参考以下文章