bochs模拟器创建映像文件 、写入文件并启动

安装 bochs,dd for windows,nasm,并将安装目录加入到环境变量中。

我用的bochs版本是2.6.8

1.用 bochs 中 bximage.exe 创建新的 img 文件

2.编写汇编代码并编译成二进制文件

test.asm汇编文本文件

org 0x7C00    ;主引导记录的内存地址
jmp entry


entry:
  mov ax, 0
  mov ss, ax
  mov ds, ax
  mov es, ax
  mov si, msg    ;将msg地址赋给si

putLoop:
  mov al, [si]    ;等同 mov al, byte [si]  将si地址开始的一个字节的值放入al中
  add si, 1    ;si = si+1
  cmp al, 0    ;al与0比较
  je fin        ;如上面比较相等 则跳转到fin 不相等则不跳转,执行后面命令
  mov ah, 0x0e
  int 0x10
  jmp putLoop
  
 fin:
  HLT  ;暂停
  jmp fin
  
 msg:
  DB 0x0a, 0x0a
  DB "hello,jadeshu!"
  ;DB 0
  times 510-($-$$) db 0;填充510字节的0,$$表示编译后的起始地址
  dw 0xaa55 ;表示结束,加上前面的510字节正好512字节满足条件

用cmd 命令输入nasm test.asm -o test.bin 编译成二进制文件

3.将test.bin文件写入如上面第1点讲解创建的映像文件a.img内

  在 cmd 中使用指令

dd if=test.bin of=a.img bs=512 count=1 conv=notrunc

  将test.bin写入 a.img映射文件内

  如果没有dd命令,在windows下可以安装cygwin,又简单又方便使用linux命令!

4.新建一个文件bosh.src,文件名你自己可以随便命名,如下是软盘启动的配置文件[硬盘配置以#注释]:

megs:32
 
romimage:file=$BXSHARE/BIOS-bochs-latest
 
vgaromimage:file=$BXSHARE/VGABIOS-lgpl-latest
 
floppya:1_44=a.img,status=inserted

#软盘映射 
boot:floppy
#硬盘
#boot:disk

#分配HD为60M,根据分配硬盘大小,cylinders, heads, spt会变化
#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, mode=flat, path="boot.img", cylinders=121, heads=16, spt=63

log:bochsout.txt
 
mouse:enabled=0 
keyboard: keymap=$BXSHARE/keymaps/x11-pc-de.map

5.启动

  在命令指示符中键入 .\bochs.exe -f bosh.src

点击start按钮即可运行!

6.调试

 在命令指示符中键入 .\bochsdbg.exe -f bosh.src

 

点击start按钮即可运行!

即到第一条指令 jmp 0XF000:E05B  地址为:f000:fff0 即FFFF0 (1M的最后16字节),因为实模式下只能读取1M内存 

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值