汇编语言学习笔记之物理地址

物理地址

CPU访问内在单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有惟一的地址,我们将这个惟一的地址称为物理地址。

CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须在内部先形成这个物理地址。不同的CPU可以有不同的形成物理地址的方式。下面讨论8086CPU是如何在内部形成内存单元的物理地址的。

8086CPU16位结构的CPU,具有下面几方面的结构特性:

  • 运算器一次最多可以处理16位的数据;
  • 寄存器的最大宽度为16位;
  • 寄存器和运算器之间的通路为16位。

8086CPU读写内存的过程:

  1. CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;
  2. 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
  3. 地址加法器将两个16位地址合成为一个20位的物理地址;
  4. 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
  5. 输入输出控制电路将20位物理地址送上地址总线;
  6. 20位物理地址被地址总线传送到存储器。

地址加法器采用物理地址=段地址*16+偏移地址的方法用段地址和偏移地址合成物理地址。

CPU可以用不同的段地址和偏移地址形成同一个物理地址。例如:CPU要访问21F60H单元,则它给出的段地址SA和偏移地址EA满足SA*16+EA=21F60H即可。

如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可定位多少内存单元?

偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。

比如给定段地址1000H,用偏移地址寻址,CPU的寻址范围为:10000H~1FFFFH。

“数据在21F60H内存单元中”对于8086CPU的意思是:数据存在内存2000:1F60单元中;或者,数据存在内存的2000段中的1F60单元中。

例题:有一个数据存放在内存20000H单元中,现在给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为10101H,最大为20000H

 

 

这些是我的学习笔记希望和大家共同交流(有什么好的介意可以发到我邮箱:cjf_021@163.com; 也可直接给我留言,以后的内容还会一起写下去的)

posted @ 2009-05-25 19:52  相约在午夜  阅读(982)  评论(0)    收藏  举报