1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 《操作系统真象还原》第二章 ---- 编写MBR主引导记录 初尝编写的快乐

《操作系统真象还原》第二章 ---- 编写MBR主引导记录 初尝编写的快乐

时间:2022-05-23 05:30:49

相关推荐

《操作系统真象还原》第二章 ---- 编写MBR主引导记录 初尝编写的快乐

书接上回安装bochs后出现No bootable device

这回我们要自己写一个MBR。

首先我们再linux系统里面需要下载一个编译器,nasm

在命令行窗口输入sudo apt-get install nasm

如果出现错误:无法找到软件包nasm,也不用急,我们只用换一次源即可,

点击左下角

点击软件和更新

我这里已经换过了,从原来的换成了现在的主服务器,并且把源代码这一行勾上了。

换好以后我们重启虚拟机或者双系统。

再在命令行里面输入sudo apt-get upgrade

这个我感觉是更新一下软件包一类的

然后再 sudo apt-get install nasm

这样应该就能完成了。 下一步就是编辑我们的MBR,这一步一定要记住去自己安装bochs的bin目录下执行,否则运行不了的。

有什么编译器就用什么编译器,比如我用的就是vim,

我就先vim mbr.S

再把下面这个代码输入进去,保存,编译。

SECTION MBR vstart=0x7c00 ;起始地址编译在0x7c00mov ax,csmov ds,axmov es,axmov ss,axmov fs,axmov sp,0x7c00;这个时候 ds = es = ss = 0 栈指针指向MBR开始位置;ah = 0x06 al = 0x00 想要调用int 0x06的BIOS提供的中断对应的函数 即向上移动即完成清屏功能;cx dx 分别存储左上角与右下角的左边 详情看int 0x06函数调用mov ax,0x600 mov bx,0x700mov cx,0mov dx,0x184f;调用BIOS中断int 0x10 mov ah,3mov bh,0;获取光标位置 需要打印信息int 0x10mov ax,messagemov bp,axmov cx,5mov ax,0x1301mov bx,0x71;白底蓝字好cooiint 0x10 ;写字符串jmp $ ;无限循环 一直跳转到当前命令位置;字符串声明 db == define byte dw == define word ascii一个字符占一个字节message db "1 MBR" ;预留两个字节 其余空余的全部用0填满 为使检测当前扇区最后两字节为0x55 0xaa 检测是否为有效扇区;510 = 512字节-2预留字节 再减去(当前位置偏移量-段开始位置偏移量)求出来的是剩余空间times 510 - ($ - $$) db 0 db 0x55,0xaa

大家把这个复制进去就行,ctrl+shift+v 才能复制到虚拟机里面。

保存后我们开始编译。

编译时输入指令

nasm -o mbr.bin mbr.S

如果没有报错的话 可以看到你编译的文件夹中多了一个

mbr.bin的文件

我其实觉得书上有一句话写的特别特别好

就是对于一个新事物的掌握 本质上是给了一个能够说服自己的理由 能够自圆其说 这就够了

之后我们再用指令ls -l 看看当前目录下文件 和文件的属性

发现也恰好是我们要求的512字节 那应该是没有其他的问题了

如果有问题回来再检查一下指令

在这个目录下面创建自己的mbr.S才是正确的。随后命令行里面输入这一段代码

dd if=/home/cooiboi/bochs/mbr.bin of=/home/cooiboi/bochs/hd60M.img bs=512 count=1 conv=notrunc

出现这三行就对了。

进入安装目录下 老套路

bochs -f boshsrc.disk

只有通过这个才能显示1MBR ,如果直接在bin目录下输入boshs的话,对话框跳出来的是【2】而不是【6】。

bin/bochs -f bochsrc.disk 处于黑屏状态 (注意!如果操作正确,这时候的默认数字应该是6,随后我们按6)再按个c

可以看见屏幕上打印了1 MBR 而不再是我们第一次安装后运行数字6出现的

No bootable device

成功完成初次尝试!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。