OS实验 : 用NASM编写MBR引导程序,在BOCHS虚拟机中测试
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了OS实验 : 用NASM编写MBR引导程序,在BOCHS虚拟机中测试,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1703字,纯文字阅读大概需要3分钟。
内容图文
实验环境
- 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 addr | b 0x7c00 |
显示当前所有断点信息 | info break | info break |
继续执行,直到遇上断点 | c | c |
单步执行(n次) | s n | s 100 |
单步执行(遇到函数跳过) | n | n |
反汇一段内存 | u start end | u 0x30400 |
查看寄存器
行为 | 指令 | 举例 |
---|---|---|
查看所有寄存器 | info cpu | info cpu |
查看通用寄存器 | r | r |
查看段寄存器 | sreg | sreg |
查看控制寄存器 | creg | creg |
查看调试寄存器 | dreg | greg |
查看内存
行为 | 指令 | 举例 |
---|---|---|
查看内存物理地址内容 | xp /nuf addr | xp /40bx 0x9013e |
查看线性地址内容 | x /nuf addr | x /40bx 0x13e |
想要使用更多指令,可以参考8.15 Using Bochs internal debugger,或Bochs调试常用命令
内容总结
以上是互联网集市为您收集整理的OS实验 : 用NASM编写MBR引导程序,在BOCHS虚拟机中测试全部内容,希望文章能够帮你解决OS实验 : 用NASM编写MBR引导程序,在BOCHS虚拟机中测试所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。