ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

OS实验 : 用NASM编写MBR引导程序,在BOCHS虚拟机中测试

2021-04-10 16:33:12  阅读:1301  来源: 互联网

标签: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 addrb 0x7c00
显示当前所有断点信息info breakinfo break
继续执行,直到遇上断点cc
单步执行(n次)s ns 100
单步执行(遇到函数跳过)nn
反汇一段内存u start endu 0x30400

查看寄存器

行为指令举例
查看所有寄存器info cpuinfo cpu
查看通用寄存器rr
查看段寄存器sregsreg
查看控制寄存器cregcreg
查看调试寄存器dreggreg

查看内存

行为指令举例
查看内存物理地址内容xp /nuf addrxp /40bx 0x9013e
查看线性地址内容x /nuf addrx /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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有