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

三.参考链接:

Bochs常用指令

Bochs在windows无法使用gui_debug的解决方法

bochs 官网 debug说明

Bochs 下的程序调试入门

bochs调试方法与指令详解

posted @ 2025-09-22 17:04  长江~之星  阅读(23)  评论(0)    收藏  举报