第2章硬件基础.pptVIP

  • 19
  • 0
  • 约1.6万字
  • 约 96页
  • 2016-08-21 发布于重庆
  • 举报
第2章硬件基础

本章结束! 作业 8、9、13、14、15 二.存储器的分段和物理地址的形成 1.为什么要分段 8086/8088CPU有20条地址线(A19∽A0),能寻址存贮空间为 =1MB,而在8088/8086CPU内部能向存贮器提供地址码的地址寄存器,均为16位,用16位地址寄存器给外部存贮器提供地址,只能提供 =64K个地址,显然,对1MB地址寻址不完。 为了使8088/8086CPU能寻址到存贮器1MB空间中任何一个单元,8088/8086巧妙地采用了地址分段方法(将1MB空间分成若干个逻辑段),从而将寻址范围扩大到了1MB。 存储器分段 高地址 低地址 段基址 段基址 段基址 段基址 最大64KB 段i-1 段i 段i+1 1MB的存贮空间中,每个存贮单元的实际地址编 码称为该单元的物理地址(用PA表示)。 2.分段 各逻辑段的起始地址必须能被16整除,即一个 段的起始地址(20位物理地址)的低4位二进制 码必须是0。 把1MB的存贮空间划分成若干个逻辑段,每段最 多64KB。 系统内用于存放段地址的寄存器只有16位,无法存放20位的段起始地址信息,既然段的起始地址低4位一定为0,所以干脆就不予保存,也就是说段寄存器中保存的段地址为该段的段的起始地址的高16位(也称为段基址),段的起始地址则为段地址×16 段内的每个存贮单元,可以用相对于本段的起始地址的偏移量来表示,这个偏移量称为段内偏移地址,也称为有效地址(EA)。 段内偏移地址也用16位二进制编码表示.所以,在一个段内有 =64K个偏移地址(即一个段最大为64KB)。 ?问题 1、8086最少可以分为多少个段? 2、8086最多可以分为多少个段? 3、下列地址哪些可能是一个段的开始地址: 134546H,23440H,67828H,1FF30H 注意:段和段之间可以连续,可以不连续,也可以重叠! 把1MB的存贮空间分成若干个逻辑段以后,对一个段内的任意存贮单元,都可以用两部分地址来描述,一部分地址为段地址(段基址),另一部分为段内偏移地址(有效地址EA),段地址和段内偏移地址都是无符号的16位二进制数,常用4位十六进制数表示。这种方法表示的存贮器单元的地址称为逻辑地址。 3.物理地址(PA)的形成 逻辑地址的表示格式为:段地址:偏移地址 段地址:段内偏移地址 …… …… XXXXXH XXXXH : XXXXH 逻辑地址 20位物理地址 注意:存储单元的物理地址唯一,但逻辑地址可以有多个! ①段地址有段寄存器提供: 一个存储单元用逻辑地址表示后,CPU 对该 单元的寻址就应提供两部分地址 段地址 段内有效地址 CS —— 提供当前代码(程序)段的段地址 DS —— 提供当前数据(程序)段的段地址 ES —— 提供当前附加数据段的段地址 SS —— 提供当前堆栈段的段地址 ②段内偏移地址由下列地址寄存器提供: BX BP SI DI CPU 对存储器进行数据读/写操作时,由这些寄存器以某种寻址方式向存储器提供段内偏移地址。 CPU 取指令时,由IP提供所取指令代码所在单元的偏移地址。 ?IP ?SP 堆栈操作时,提供堆栈段的段内偏移地址 已知某存储单元的逻辑地址,怎样求该单元的 物理地址PA: 物理地址=段地址 10H+段内偏移地址 8086/8088 CPU中的BIU单元的地址加法器∑用来完成物理地址的计算,其计算方法如图所示。 ∑ 物理地址的形成 19 0 16位段基址 16位段内偏移地址 16位段基址 0 0 0 0 20位物理地址 19 0 15 段寄存器 0 15 EA 0 例1:某单元的逻辑地址为4B09H:5678H,则该存储单元的物理地址为: 物理地址(PA)=段地址 10H+EA =4B09H 10H+5678H =4B090H+5678H =50708H 物理地址计算举例 例2:已知DS=2000H,相对于DS偏移EA1为5000H,相对于ES偏移EA2为0800H,则指向同一物理地址的ES为多少? EA2 ES DS EA1 DS×10H+EA1=ES×10H+EA2 ES=(DS×10H+EA1-EA2)/10H   =(2000H×10H+5000H-0800H)/10H =2480H 例3:已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H,DS段有一操作数,其偏移

文档评论(0)

1亿VIP精品文档

相关文档