标签:Bochs 查看 bochs 虚拟机 boot mov BOCHS ax OS
实验环境
- VMware Workstation Pro
- ubuntu 20.10 amd64
实验步骤
安装Nasm
sudo apt install nasm
创建引导扇区
首先编写汇编代码。使用命令vim boot.asm
创建 boot.asm 文件
写入以下代码:
org 07c00h
mov ax, cs
mov ds, ax
mov es, ax
call DispStr
jmp $
DispStr:
mov ax, BootMessage
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessage: db "Hello, OS world!"
times 510 - ($-$$) db 0
dw 0xaa55
输入 :wq
保存并退出。再使用命令nasm boot.asm -o boot.bin
生成 boot.bin 文件。
安装Bochs
使用命令sudo apt-get install vgabios bochs bochs-x bximage
使用bximage创建虚拟软盘
输入命令bximage
,显示如下画面:
选择生成 fd(软盘),其他选择可以使用默认值,直接按回车。完成这一步后,当前目录就生成了软盘映像 a.img 。
将引导扇区写入软盘
使用命令dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
编写Bochs的配置文件
使用命令 vim bochsrc
,将以下内容写入
megs: 32
romimage: file=/usr/share/bochs/BIOS-bochs-latest
vgaromimage: file=/usr/share/vgabios/vgabios.bin
floppya: 1_44=a.img, status=inserted
boot: floppy
log: bochsout.txt
mouse: enabled=0
启动Bochs 虚拟机(举有调试功能)
输入命令bochs -f bochsrc
.进入后,返回终端,输入···c···,则会直接显示出 Hello,OS world。
若想调试,可参考下表
查找和定位代码
行为 | 指令 | 举例 |
---|---|---|
在某物理地址设置断点 | b addr | b 0x7c00 |
显示当前所有断点信息 | info break | info break |
继续执行,直到遇上断点 | c | c |
单步执行(n次) | s n | s 100 |
单步执行(遇到函数跳过) | n | n |
反汇一段内存 | u start end | u 0x30400 |
查看寄存器
行为 | 指令 | 举例 |
---|---|---|
查看所有寄存器 | info cpu | info cpu |
查看通用寄存器 | r | r |
查看段寄存器 | sreg | sreg |
查看控制寄存器 | creg | creg |
查看调试寄存器 | dreg | greg |
查看内存
行为 | 指令 | 举例 |
---|---|---|
查看内存物理地址内容 | xp /nuf addr | xp /40bx 0x9013e |
查看线性地址内容 | x /nuf addr | x /40bx 0x13e |
想要使用更多指令,可以参考8.15 Using Bochs internal debugger,或Bochs调试常用命令
标签:Bochs,查看,bochs,虚拟机,boot,mov,BOCHS,ax,OS 来源: https://blog.csdn.net/WWWzq_/article/details/115577328
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。