
MBR
文章平均质量分 79
B06030927
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
DD_系统构建-MBR(2) 流程
代码片段讲解验证方法nasm工具dd工具bochs工具原创 2017-06-25 22:22:04 · 449 阅读 · 0 评论 -
D_D系统构建-MBR(3)代码
MBR代码boot.asm%include "base_phy.inc"section mbr align=16 vstart=MACRO_BOOT_ADDR jmp start;数据区bootmsg: db "MBR running..", 0ah,0dh;bootmsglen: equ $-bootmsgmbr_left_len dw mbr_end-原创 2017-07-09 23:31:21 · 473 阅读 · 0 评论 -
D_D系统构建-MBR(4)代码剖析
上一章节我们将代码都罗列出来 ,实际上这还是一个测试代码,不会真正的加载 loader; 在后面Loader实现后,会对此代码再进行充实完善,当前我们只用来验证下分段mbr是否能正常运行。boot.asm如下:这一行表示引用头文件的意思,与C中的include一样,编译时会在此展开。section表示 这是一个段,align表示 编译时按照16bit对齐, vstart原创 2017-07-11 23:22:02 · 393 阅读 · 0 评论 -
D_D系统构建-MBR(1)
MBR,英文含义:Main Boot Record),主引导纪录,是位于磁盘最前边的一段引导(Loader)代码,一般写于磁盘第一个扇区处。它是我们的系统上电后第一个运行的磁盘程序(在它前面实际还有很多固件程序,bios等,主要完成硬件自检工作,这阶段发生任何异常,比如内存异常,显卡异常,磁盘异常等均会中止,当然这一块我们不关注,也无法干预),最简单的理解就看成是由我们的pc把它加载到内存地址0:原创 2017-06-24 22:57:13 · 579 阅读 · 0 评论 -
D_D系统构建-MBR(6)加载loader文件代码MBR解析
上一章节,我们把当前完成的代码都列出来,包括主体代码boot.asm, loader.asm , 还有两个 include文件: base_phy.inc, filesystem.inc; base_phy.inc之前已经介绍过,且都是定义了一些地址宏,不再重复介绍;loader.asm只是简单的显示 一句话,也比较简单。相比之下 , boot.asm, filesystem.inc文件比较复杂,原创 2017-07-19 23:13:21 · 449 阅读 · 0 评论 -
D_D系统构建-MBR(7)加载loader文件代码filesystem.inc解析
上一章节解析了boot.asm文件,这个文件包含了两个Inc文件,base_phy.inc及filesystem.inc,均在我们的include文件夹下。同时这两个 文件在前面 已经提供了代码,大家可以到http://blog.youkuaiyun.com/b06030927/article/details/75269497处取代码( DD系统构建-MBR(5)加载loader文件)。原创 2017-07-21 23:23:37 · 410 阅读 · 0 评论 -
D_D系统构建-MBR(8)filesystem.inc代码整改适配32位(附提供当前整个开发目录文件)
上几篇我们已经可以通过mbr加载loader文件,并能成功执行loader指令。下面计划是要扩展我们的loader文件,来进入保护模式的,在保护模式中加载kernel文件,自然想复用我们已经有的filesystem.inc文件。但检查过这个文件后,发现里面的函数寄存器基本使用的是16位的。且存在修改ds/es的操作。这在实模式下没有关系。但 在进入保护模式就会有问题了。保护模式下,我们原创 2017-07-28 22:50:39 · 547 阅读 · 0 评论 -
D_D系统构建-Loader的保护模式尝试
前面我们完成了boot(mbr)读取Loader的任务,但我们一直都 在实模式下验证的。本章我们将尝试保护模式下运行下loader.首先我们要改造下我们的Loader,最简单的肯定要包含保护模式需要的内容。实模式下,地址访问实际是按照段寄存器:偏移进行的, 实际的物理地址=段寄存器*16+偏移,比如段寄存器为0x2000, 偏移为0x1000, 实际对就的物理地址:0x2000*16+原创 2017-08-06 23:12:35 · 387 阅读 · 0 评论