bochs的使用命令
一.bochs的使用
1.基本debug命令
#b[reak] address 设置断点
b 0x7c00
#c[ontinue] 功能:继续执行,直到下一个断点或终止
c
#s[tep] 功能:执行一条指令,然后停在下一条指令处
s
# n[ext]功能:执行一条指令,但如果当前指令是 CALL,则不进入被调用的子程序
# 如果是循环,可用结束循环
n
# 查看断点
info break
2.寄存器操作指令
#r[egisters] 功能:显示所有通用寄存器的当前值。
r
#设置寄存器的值
set ax = 0x1234
#查看段寄存器的值
sreg
#查看调试寄存器
dreg
#查看FPU stats
fp
#查看控制寄存器
creg
#每一步执行时打印所有通用寄存器的值
trace-reg on
3.内存操作指令
#查看堆栈
print-stack
#查看内存物理地址内容
#xp /nuf addr
#查看线性地址内容
#x /nuf addr
#常用参数 x:hex m:习惯的输出格式
#建议
x /64mxb 0x7c00
#nfu 可选参数,默认 u=x f=w n =1
#如果继续按x 则n=n+1 其他参数何最近的指令一致、
#setpmem [addr] [size] [val] 设置物理内存某地址的内容
setpmem 0x00000000 0x4 0x11223344
x /4 0x00000000
4.反汇编指令
# u [/num] start end
#常用下面两种指令
u /2 0x7c00 #反汇编0x7c00 后两条指令
u 0x7c00 0x7c19 #反汇编 0x7c00 到0x7c19 之间的命令
二.windows下开启gui_debug
配置文件修改为
display_library: win32, options="gui_debug"
需要通过命令行运行bochsdbg,才能显示gui
bochsdbg -q -f bochsrc.bxrc
bochs 从零开始到启动
1. 写汇编代码 boot.asm
org 0700h
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,00ch
mov dl,0
int 10h
ret
bootmessage: db "Hello, OS world!"
times 510-($-$$) db 0
dw 0xaa55
2.编译文件
nasm boot.asm -o boot.bin
3.制作硬盘(windows bochs2.8环境)
bximage -q -hd=16 -func=create -sectsize=512 -imgmode=flat master.img
4.将二进制文件写入硬盘
dd if=boot.bin of=master.img bs=512 count=1 conv=notrunc
5. bochs启动
bochsdbg -q -f bochsrc.bxrc
6.允许断点
#需要在配置文件中添加:
#magic_break: enabled=1
xchg bx,bx

浙公网安备 33010602011771号