注:文中提到的例子可能来源于网络,可能来源于王爽的汇编语言(第4版),可能来自本人。
一、总线
- 每一个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互
- 总线:一根根导线的集合
- 总线的分类
- 地址总线
- 数据总线
- 控制总线
- 地址总线
- 它的宽度决定了CPU的寻址能力
- 8086的地址总线宽度是20,所以寻址能力是1M(2^20)
- 数据总线
- 它的宽度决定了CPU的单次数据传送量,也就是数据传送速度
- 8086的数据总线宽度是16,所以单次最大传递2个字节的数据
- 控制总线
- 它的宽度决定了CPU对其他器件的控制能力、能有多少种控制
二、内存
- 各类存储器的逻辑连接情况
- 所有的内存单元都有唯一的地址,叫做物理地址
- 各类存储器的物理地址情况
- 内存地址空间的大小受CPU地址总线宽度的限制。8086的地址总线宽度为20,可以定位 2^20个不同的内存单元(内存地址范围0x00000~0xFFFFF),所以8086的内存空间大小为1MB
- 0x00000~0x9FFFF:主存储器。可读可写
- 0xA0000~0xBFFFF:向显存中写入数据,这些数据会被显卡输出到显示器。可读可写
- 0xC0000~0xFFFFF:存储各种硬件\系统信息。只读
- 下图是各类存储器的逻辑连接-物理地址对应图
三、8086的寻址方式
- CPU访问内存单元时,要给出内存单元的地址
- 8086有20位地址总线,可以传送20位的地址,1M的寻址能力
- 但它又是16位结构的CPU,它内部能够一次性处理、传输、暂时存储的地址为16位。如果将地址从内部简单地发出,那么它只能送出16位的地址,表现出来的寻址能力只有64KB
8086采用一种在内部用2个16位地址合成的方法来生成1个20位的物理地址
四、内存的分段管理
- 8086是用“起始地址(段地址×16) + 偏移地址 = 物理地址”的方式给出物理地址
- 为了开发方便,我们可以采取分段的方法来管理内存,比如:
- 地址10000H~100FFH的内存单元组成一个段,该段的起始地址为10000H,段地址为1000H,大小为100H
- 地址10000H~1007FH、10080H~100FFH的内存单元组成2个段,它们的起始地址为:10000H和10080H,段地址为1000H和1008H,大小都为80H
- 偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB
几个基础的知识点,今天到这里啦,未完待续......