第5-7章感觉是这一本书中比较奇怪的章节,可能是作者考虑到读者人群水平的差异,故意由浅入深地讲如何在屏幕上显示字符和使用mov,jmp指令等等,但是这样讲的东西有点重复,而且看了第六,第七章以后,感觉第5章的做法真是太笨了。 ★PART1:显卡与显存 1. 显卡与显存 a. 显卡控制显示器的最小单位
分类:
编程语言 时间:
2016-02-19 00:20:31
阅读次数:
376
中央处理器 CPU 微处理器抽象为以名称存取的寄存器。 主要包含指令执行的运算器和控制器,还有多种寄存器。 CPU工作模式 1 实模式 2 保护模式 3 虚拟8086模式 8086/8088的功能结构 模块一、总线接口单元BIU,主要负责读取指令和操作数。 模块二、执行单元EU,主要负责指令译码和执
分类:
其他好文 时间:
2016-02-05 12:11:40
阅读次数:
268
在我们阅读boot loader代码时,遇到了两个非常重要的概念,实模式(real mode)和保护模式(protected mode)。 首先我们要知道这两种模式都是CPU的工作模式,实模式是早期CPU运行的工作模式,而保护模式则是现代CPU运行的模式。 但是为什么现代CPU在运行boot...
分类:
移动开发 时间:
2016-01-09 15:06:09
阅读次数:
221
注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在Windows NT下无法工作,所以所有设备都通过注册表来控制,一般这些是通过BIOS来控制的。在Win9x下,16位驱动会继续以实模式方式设备工作,它们使用 system.ini来控...
注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在Windows NT下无法工作,所以所有设备都通过注册表来控制,一般这些是通过BIOS来控制的。在Win9x下,16位驱动会继续以实模式方式设备工作,它们使用 system.ini来控...
1.段寄存器CS(代码段),代码段是一个存储器区域,这里保存微处理器使用的代码(程序和过程)。代码段寄存器定义了存放代码的存储器段的起始地址。在实模式下工作时,它定义一个64KB存储器段的起始地址;在保护模式下工作时,它选择一个描述代码存储器起始地址和长度的描述符。对于8086~80286,代码段限...
分类:
其他好文 时间:
2015-12-12 21:48:01
阅读次数:
168
在上一节提到由BIOS构建实模式下的内存中断向量表和中断服务程序,那么接下来就是利用这些中断加载操作系统内核,这一步又有三个步骤:1、引导程序bootsect加载;2、setup程序加载;3、system内核加载。在中断向量表和中断服务程序构建完成以后,BIOS会产生int0x19中断,该中断..
分类:
系统相关 时间:
2015-11-05 16:54:06
阅读次数:
246
第一章 内存地址空间的地址段分配 地址:0~7FFFH的32kb空间为主随机存储器的地址空间 地址:8000~9FFFH的8kb空间为显存地址空间 地址:A000~FFFFH的24kb空间为各个rom的地址空间 第二章 进入DOS模式 重新启动计算机,进入DOS模式,此时进入的是实模式的DOS 在W...
分类:
其他好文 时间:
2015-10-21 21:01:52
阅读次数:
348
逻辑地址(Logical Address)是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段...
分类:
其他好文 时间:
2015-10-16 11:49:32
阅读次数:
297
JMPI是x86实模式下的段间跳转指令: BOOTSEG = 0x07C0 JMPI 4, #BOOTSEG 跳转后,CS = 0x07C0,而IP = 0x0004,也就是接下来会执行0x7C00:0004处的指令。
分类:
系统相关 时间:
2015-09-20 17:29:06
阅读次数:
529