MBR 代码分析

<1>

          mov ax,0xb800                 
         mov es,ax

一直以来,0xB8000~0xBFFFF 这段物理地址空间,是留给显卡的,由显卡来提供,用来显示文本。除非显卡出了毛病,否则这段空间总是可以访问的。

如果显卡出了毛病怎么办呢?很简单,计算机一定不会通过加电自检过程,这就是传说中的严重错误,计算机是无法启动的,更不要说加载并执行主引导扇区的内容了。

和访问主内存一样,为了访问显存,也需要使用逻辑地址,也就是采用“段地址:偏移地址”的形式,这是处理器的要求。

考虑到文本模式下显存的起始物理地址是 0xB8000,这块内存可以看成是段地址为 0xB800,偏移地址从 0x0000 延伸到 0xFFFF 的区域,因此我们可以把段地址定为0xB800。

访问内存可以使用段寄存器 DS,但这不是强制性的,也可以使用 ES。因为 DS 还有别的用处,所以在这里我们使用 ES 来指向显存所在的段。

我们把 0xB800 作为段地址传送到附加段寄存器 ES,以后就用ES 来读写显存。这样,段内偏移为 0 的位置就对应着屏幕左上角的字符。




阅读更多
个人分类: c/c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

MBR 代码分析

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭