汇编语言学习笔记之物理地址
物理地址
CPU访问内在单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有惟一的地址,我们将这个惟一的地址称为物理地址。
CPU通过地址总线送入存储器的必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须在内部先形成这个物理地址。不同的CPU可以有不同的形成物理地址的方式。下面讨论8086CPU是如何在内部形成内存单元的物理地址的。
8086CPU16位结构的CPU,具有下面几方面的结构特性:
- 运算器一次最多可以处理16位的数据;
- 寄存器的最大宽度为16位;
- 寄存器和运算器之间的通路为16位。
8086CPU读写内存的过程:
- CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;
- 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
- 地址加法器将两个16位地址合成为一个20位的物理地址;
- 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;
- 输入输出控制电路将20位物理地址送上地址总线;
- 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; 也可直接给我留言,以后的内容还会一起写下去的)

浙公网安备 33010602011771号