欢迎光临
我们一直在努力

基于Bochs的汇编语言开发环境搭建

汇编语言令人痴迷,汇编开发让人陶醉。然而调试汇编程序则困难重重,其开发调试环境搭建更需历经千难万险:专门的实验机,特殊的下载器,监测其运行的方式也不是那么直接,整个过程是满满的仪式感,既如一场噩梦,又显得那么“高端专业”。好在有Bochs,让汇编程序开发一下子又变得这么轻松愉悦。

本文演示在MacOS上搭建bochs汇编程序开发环境过程

一、安装Bochs

在 macOS(苹果系统)上安装 Bochs(一个开源的 x86 模拟器,常用于操作系统开发和教学)有几种方法。以下是 最新、最可靠的方式(适用于 Intel 和 Apple Silicon Mac)。

(一)使用 Homebrew(最简单)

 1. 安装 Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. 安装bochs

brew install bochs

✅ 这会自动下载、编译并安装 Bochs 及其依赖(包括 SDL2 图形支持)。

3. 验证安装

bochs –version

输出示例:

Bochs x86 Emulator 2.7

(二)源码安装

如果你需要 自定义功能(如调试器、特定设备支持),可手动编译:

1. 安装依赖 

brew install sdl2 libpng

2. 下载源码

wget https://downloads.sourceforge.net/project/bochs/bochs/2.7/bochs-2.7.tar.gz
tar -xzf bochs-2.7.tar.gz
cd bochs-2.7

3. 配置(启用常用功能)

./configure \\
–enable-sdl2 \\
–enable-all-optimizations \\
–enable-debugger \\
–enable-disasm \\
–with-x

4. 编译安装

make -j$(sysctl -n hw.ncpu)
sudo make install

二、构建开发测试环境

(一)编写mdr.asm

bits 16
org 0x7c00

start:
xor ax,ax
mov ds,ax
mov es,ax
mov ss,ax
mov sp,0x7c00

mov ah,0x00
mov al,0x03
int 0x10

mov ah,0x06
mov al,0
mov bh,0x07
mov cx,0
mov dx,0x184f
int 0x10

mov ah,0x02
mov bh,0
mov dh,10
mov dl,10
int 0x10

mov si,msg
call print_string

mov ah,9
mov al,'a'
mov bl,1101b
mov bh,0
mov cx,20
int 0x10

mov ax,0xb800
mov es,ax
mov word [es:0],0x0241
mov word [es:2],0x0242
hang:
hlt
jmp hang
print_string:
lodsb
or al,al
jz .done
mov ah,0x0e
mov bx,0x07
int 0x10
jmp print_string
.done
ret
msg db 'Hello,MBR!',0
times 510-($-$$) db 0
dw 0xaa55

(二)构建Makefile

all: mdr.asm
nasm -f bin mdr.asm -o mdr.bin
dd if=./mdr.bin of=./hd0.img bs=512 count=1 conv=notrunc
run:
bochs -q -f ./bochsrc

构建过程需要使用nasm,其安装教程请参考基于Qemu+Nasm搭建汇编语言开发调试模拟环境

(三)配置bochs

在终端bochs,生成配置文件bochsrc

将在当前目录生成./bochsrc文件。修改boot和ata0-master的内容如下所示。

boot: disk
ata0-master: type=disk,path="hd0.img"

bochsrc完整内容如下:

# configuration file generated by Bochs
plugin_ctrl: unmapped=true, biosdev=true, speaker=true, extfpuirq=true, parallel=true, serial=true
config_interface: textconfig
display_library: sdl2
memory: host=32, guest=32
romimage: file="/opt/local/share/bochs/BIOS-bochs-latest", address=0x00000000, options=none
vgaromimage: file="/opt/local/share/bochs/VGABIOS-lgpl-latest"
boot: disk
floppy_bootsig_check: disabled=0
# no floppya
# no floppyb
ata0: enabled=true, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk,path="hd0.img"
ata0-slave: type=none
ata1: enabled=true, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata1-master: type=none
ata1-slave: type=none
ata2: enabled=false
ata3: enabled=false
optromimage1: file=none
optromimage2: file=none
optromimage3: file=none
optromimage4: file=none
optramimage1: file=none
optramimage2: file=none
optramimage3: file=none
optramimage4: file=none
pci: enabled=1, chipset=i440fx
vga: extension=vbe, update_freq=5, realtime=1
cpu: count=1:1:1, ips=4000000, quantum=16, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0
cpuid: level=6, stepping=3, model=3, family=6, vendor_string="GenuineIntel", brand_string=" Intel(R) Pentium(R) 4 CPU "
cpuid: mmx=true, apic=xapic, simd=sse2, sse4a=false, misaligned_sse=false, sep=true
cpuid: movbe=false, adx=false, aes=false, sha=false, xsave=false, xsaveopt=false, avx_f16c=false
cpuid: avx_fma=false, bmi=0, xop=false, fma4=false, tbm=false, x86_64=true, 1g_pages=false
cpuid: pcid=false, fsgsbase=false, smep=false, smap=false, mwait=true
print_timestamps: enabled=0
port_e9_hack: enabled=0
private_colormap: enabled=0
clock: sync=none, time0=local, rtc_sync=0
# no cmosimage
log: –
logprefix: %t%e%d
debug: action=ignore
info: action=report
error: action=report
panic: action=ask
keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none
mouse: type=ps2, enabled=false, toggle=ctrl+mbutton
speaker: enabled=true, mode=gui
parport1: enabled=true, file=none
parport2: enabled=false
com1: enabled=true, mode=null
com2: enabled=false
com3: enabled=false
com4: enabled=false

(四)测试运行

1.  生成hd0img

make #生成hd0.img文件

2. 启动bochs

make run

3. 演示效果

赞(0)
未经允许不得转载:171主机测评 » 基于Bochs的汇编语言开发环境搭建
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址