一个典型的CPU由运算器,控制器,寄存器等器件组成
内部总线实现CPU内部各个器件之间的联系,外部总线就是地址总线,控制总线等的这些联系CPU和主板上其他器件的联系
8086CPU的所有寄存器是16位的
- 16位的CPU一次性最多可以处理16位的数据
- 通用寄存器最大宽度为16位(状态寄存器这些不一定是16位)
- 寄存器与运算器之间的通路是16位
- 8086有20位的地址总线,寻址能力为1M
- 但是内部CPU却是16位
所以20位是由两个16位的数据进行加工得来的,可以看一下下图,段地址是16位,偏移地址是16位的,经过地址加法器
地址加法器合成物理地址的方法:
物理地址 = 段地址 x 16 + 偏移地址
也就是段地址左移4位加上偏移地址
这样是因为内存太大,寄存器性能不足导致的
例如:
21F60H
上面这个
地址可以由
2000H 1F60H
2100H 0F60H
等组成
习题:
- 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 _ 到 _
物理地址=SA*16+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA16+0h)~(SA16+ffffh)
现在SA=0001h,那么寻址范围为
(0001h16+0h)~(0001h16+ffffh)
=0010h~1000fh
- 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻址到此单元,则SA 应满足的条件是?
最大为2000H很好解释,主要是是最小值,其实画一下图就出来了,答案是
1001H - 2000H