从实模式到保护模式-第2,3,4章

  1. 内存按照字节来组织,单次访问的最小单位是1字节,这是最基本的存储单元
  2. 64位处理器包含64位的寄存器和算术逻辑部件,尽管内存的最小组成单位是字节,但是,经过精心的设计和安排,它能够按字节,字,双字和四字进行访问
  3. 当采用分段策略之后,一个内存单元的地址实际上就可以用“段:偏移”或者“段地址:偏移地址”来表示,这就是通常所说的逻辑地址
  4. 为了在硬件一级提供对“段地址:偏移地址”内存访问模式的支持,处理器至少要提供两个段寄存器,分别是代码段寄存器(code Segment,cs)和数据段寄存器(ds);对cs内容的改变将导致处理器从新的代码段开始执行。同样,在开始访问内存中的数据之前,也必须首先设置好ds寄存器,使之指向数据段;最重要的是,当处理器访问内存时,它把指令中指定的内存地址看成是段内的偏移地址,而不是物理地址。这样,一旦处理器遇到一条访问内存的指令,它将把ds中的数据段起始地址和指令中提供的段内偏移相加,来得到访问内存所需要的物理地址
  5. 8086内部有4个段寄存器,其中cs是代码段寄存器,ds是数据寄存器,es是附加段寄存器。当需要在程序中同时使用两个数据段时,ds指向一个,es指向另一个。可以在指令中指定使用ds和es中的哪一个,如果没有指定,则默认是使用ds。ss是栈寄存器
  6. ip是指令指针寄存器,它只和cs一起使用,而且只有处理器才能直接改变它的内容。当一段代码开始执行时,cs指向代码段的起始地址,ip指向段内偏移。这样,由cs和ip共同形成逻辑地址,并由总线接口部件变换成物理地址来取地址。然后,处理器会自动根据当前指令的长度来改变ip的值,使它指向下一条指令
  7. 8086的段寄存器和ip寄存器都是16位的,如果按照原先的方式,把段寄存器的内容和偏移地址直接相加来形成物理地址的话,也只能得到16位的物理地址。麻烦的是,8086提供了20根地址线,换句话说,它提供的是20位物理地址
  8. 提供20位地址线的原因很简单,16位的物理地址只能访问64KB的内存,地址范围是0000H~FFFFH,共65536个字节。这样的容量,即使是在那个年代,也显得捉襟见肘。而20位的物理地址则可以访问多达1MB的内存,地址范围从00000H到FFFFFH。问题是,16位的段地址和16位的偏移地址相加,只能形成16位的物理地址,怎么得到20位的物理地址呢?为了解决这个问题,8086处理器在形成物理地址时,先将段寄存器的内容左移4位,形成20位的段地址,然后再同16位的偏移地址相加,得到20位的物理地址。
  9. 因为段寄存器是16位的,所以在不重叠的情况下,最多将1MB的内存分成65536个段,每个段正好16个字节,偏移地址从0000H到000FH;或者因为偏移地址是16位,从0000H到FFFFH,所以段的最大长度是64KB,最多16个段
  10. 偏移地址总是要求从0000H开始,段的划分是自由的,起始地址是16的倍数(段寄存器要左移4位,后4位一定是0),称为16字节对齐,也可以是任意长度,只要不超过64KB。比如段地址可以是82260H,段的长度为64KB
  11. 8086系统中,ROM占据着内存空间顶端的64KB,物理地址是0XF0000 ~ 0XFFFFF,里面固化了开机时要执行的指令;DRAM占据着较低端的640KB,地址范围是0x00000 ~ 0x9FFFF;中间还有一部分分给了其他外围设备
  12. 在加电时,CS是0xFFFF,IP是0X0000,所以,它取的第一条指令的物理地址为0XFFFF0,正好位于ROM中,那里固化了开机时要执行的指令;处理器取指执行的顺序是从内存的低地址往高地址推进,如果从0XFFFF0开始执行,这个位置离1MB内存的顶端(物理地址为0XFFFFF)只有16个字节的长度,一旦IP寄存器的值超过)0X000F,比如IP=0X0011,那么,它与CS一起形成的物理地址将因为溢出而变成0X00001,这将会绕到1MB内存的最低端,所以,ROM中位于物理地址0XFFFF0的地方,通常是一个跳转指令,它通过改变CS和IP的内容,使处理器从ROM中的较低地址处开始取指执行。这块ROM为BIOS(基本输入输出系统)ROM
  13. 硬盘每个盘片都有两个磁头,上下各一个,所以经常用磁头来指代盘面,第一个盘片上面的磁头编号为0,下面的磁头编号为1;第2个盘片,上面的磁头编号为2,下面的磁头编号为3,以此类推;磁道,或者称为柱面,从盘面最边缘的那条磁道开始,向着圆心的方向,从0开始编号;为了加快数据在磁盘上的读写,最好的办法是尽量不移动磁头,这样,当0面的磁道不足以容纳要写入的数据时,应当把剩余的部分写在1面的同磁道上,如果还写不下,那就继续吧剩余的部分写在2面的同一磁道上,换句话说,在硬盘上,数据的访问是以柱面来组织的;每条磁道能够划分为几个扇区取决于磁盘的制造者,但通常为63个,每个扇区都有一个编号,与磁头和磁道不同,扇区的编号是从1开始的,扇区与扇区之间以间隙间隔开来,每个扇区以扇区头开始,然后是512个字节的数据区,扇区头包含了每个扇区自己的信息,主要有本扇区的磁道号,磁头号和扇区号,用来供硬盘定位机构使用,还包含一个指示扇区是否健康的标志,以及用来替换该扇区的扇区地址
  14. 硬盘的第一个扇区是0面0道1扇区,称为主引导扇区。BIOS将读取主引导扇区的内容,将它加载到内存地址0X0000:0X07C0处(也就是物理地址0X07C00,固定地址),然后用一个jmp指令跳到那里接着执行:
    jmp 0X0000:0X7c00
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值