1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 操作系统真象还原第2章:编写MBR主引导记录

操作系统真象还原第2章:编写MBR主引导记录

时间:2020-07-08 08:07:04

相关推荐

操作系统真象还原第2章:编写MBR主引导记录

前言

这章的内容挺少的,也很简单,如果环境没配置错的话是没啥问题的。但是这章也很精彩,把引导的过程给说了出来,我也是看了几遍把这个过程给大致看懂了。

首先计算机一开机这个时cpu会自动把cs:ip指针赋值成0xf000:0xfff0,根据实模式下的寻址关系可以知道此时正好是指向地址为0xffff0,而这个地址距离最高地址0xfffff之间正好是16字节的地址空间,这肯定是不够BIOS来执行各种硬件初始化以及各种硬件检查和中断向量表的建立等等,所以这里实际上存的跳转的地址,跳转到足够的地址后就会去执行这些,当最后一项任务也就是检查0柱面0磁道1扇区(CHS协议),会在那里发现MBR(主引导程序),这是通过MBR的最后两个字节0x55,0xaa这两个魔数来标明是否为MBR的,之后BIOS会把MBR加载到地址为0x7c00的地址上去,然后BIOS的任务就完成了,就该MBR大显身手了。

关于为何是跳转到地址为0x7c00这更多是根据操作系统的内存布局来决定的,在dos系统时期,操作系统只有32kb,而MBR512字节,因为MBR本身还是个程序,还需要栈空间,于是再给其分配512字节的栈空间,于是MBR一共占据1KB的空间,把MBR放在最角落的位置,也是为了省出更多空间便于其他使用,32kb用16进制表示就是0x8000减去1kb也就是0x0400,则得到了0x7c00的地址

实验

建立mbr.S文件

SECTION MBR vstart=0x7c00mov ax,csmov ds,axmov es,axmov ss,axmov fs,axmov sp,0x7c00mov ax,0x600mov bx,0x700mov cx,0mov dx,0x184fint 0x10mov ah,3mov bh,0int 0x10mov ax,messagemov bp,axmov cx,5mov ax,0x1301mov bx,0x2int 0x10jmp $message db "1 MBR"times 510-($-$$) db 0db 0x55,0xaa

之后采用linux下的dd指令把,这个文件放入0柱面0磁道1扇区中就可以了

然后运行就可以左边屏幕有一个绿色闪烁的标志1 MBR了。

参考

操作系统真象还原

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