一、8086CPU 如何获得寻址1MB内存空间能力?
1、物理空间;8086CPU,寻址总线20根,宽度=2^20=1MB;00000H-FFFFFH;
2、通过对存储器分段和使用段寄存器,
实现了寻址1MB物理空间能力;
二、物理内存1MB内部划分的逻辑是什么?
首先根据寻址需求,将1MB物理地址空间分为若干个逻辑段。每个逻辑段必须满足两个条件:
1、逻辑段的开始地址为16的倍数;
2、逻辑段的最大长度为64K 1MB地址最多划分64K个逻辑段,最少划分为16个逻辑段。
第一个条件因为段寄存器长度为16位,第二个条件因为指针寄存器长度16位。
段逻辑段与逻辑段可以相连,也可以不相连,还可以重叠。
逻辑地址表示方法:段值:偏移
偏移:由指针寄存器提供
三、为何要用这种段值:偏移;的方式来表示逻辑地址呢?
1、有利于实现寻址1MB空间;
2、有利于管理存储空间;
3、实现程序的重定位和浮动;(如果没有逻辑段,直接绑定让程序绑定物理地址,那样其它程序就无法运行了;)
4、实现代码 数据的隔离;充分利用存储空间;可以重叠,重合;
四、如何保证程序代码加载各种平台通用性?
段+偏移,解决
实现
1、写代码先定义逻辑段
2、在用偏移指向具体的存储单元
这样在不同的机器加载时,先把物理地址划分成若干个逻辑段;让在用指针指向这个段的偏移,这样就保证了代码寻址的正确性;这样程序就做到通用,这也叫程序的重定位和浮动
标签:汇编,逻辑,16,寻址,偏移,寄存器,1MB From: https://www.cnblogs.com/-swordsman/p/16659184.html