检测点2.2
关于检测点2.2 第2题
举一个生活里的例子
- [问题描述] 老张家住在 8 楼,假设老张一口气可以爬 5 层楼,那么请问,老张现在站哪一层楼,接下来他一口气就可以到家了?(不考虑往回走)
- [分析解答] 如果老张现在就在 8 楼,那么他已经到家了,这就是他现在可能在的最大楼层。如果老张现在在 3 楼,那么一口气爬个 5 层,刚好到 8 楼也到家了,这就是老张可能在的最低楼层。并且可以看到,如果老张现在站在比 3 楼恰恰矮一层的 2 楼,一口气就只能爬到 7 楼了,恰恰还没有到家。
16位的CPU 与 20位的地址总线
什么是CPU
- CPU 包括
运算器 +寄存器+控制器+内部总线
-
16位的CPU
又叫做16位机
又叫做字长16位
- 运算器,处理,一次可以处理
16位
的数据 - 寄存器,存储,最大宽度为
16位
(点我复习寄存器) - 内部总线,传输,运算器与寄存器之间的通路为
16位
(注意与地址总线的区分)
什么是地址总线 (点我复习地址总线)
-
8086CPU 有20根地址总线,可以传送20位地址,达到1MB的寻址能力(
1MB = 2^10 KB = 2^20 B
)
CPU只有16位,地址总线有20位,岂不是浪费了?
- 8086用两个16位地址,合成一个20位地址,这个20位的地址就是要访问的内存单元的物理地址
物理地址
物理地址是内存单元的唯一地址
物理地址 = 段地址 × 16 + 偏移地址(段地址 × 16 记为 起始地址)
- 要区分 16位地址 和 公式中乘以16的区别(这两个16都读作十进制里的十六)
- 8086CPU 提供两个16位地址,一个是段地址,一个是偏移地址
- 十六进制 转换 二进制 在线工具 https://codebeautify.org/hex-binary-converter
假设CPU 提供如下 两个16位地址:
进制 十六进制 二进制
段地址 2100H 0010 0001 0000 0000
偏移地址 0F60H 0000 1111 0110 0000
物理地址的计算如下:
段地址X16
这里的16是十进制的十六 也就是2^4
读作 段地址乘以十六
就是说 段地址 乘以 2的4次方
就是说 段地址的二进制形式 要 左移 4位 然后 补0
就是说 段地址的十六进制形式 要 左移 1位 然后 补0
段地址X16
十六进制为 21000H 注意后面补了一个0
二进制位 0010 0001 0000 0000 0000 后面补齐了0
代入公式
物理地址 = 段地址 × 16 + 偏移地址
21000H
+ 0F60H
-----------
21F60H
起始地址 0010 0001 0000 0000 0000
偏移地址 0000 1111 0110 0000
---------------------------------------
物理地址 0010 0001 1111 0110 0000
物理地址
写成十六进制就是 21F60H
写成二进制就是 0010 0001 1111 0110 0000
通过观察二进制形式,可以很直观地看到这里有20个位,
因此这个物理地址在 20位的地址总线 上传输
- CPU拿出来两个16地址,一个给段地址,一个给偏移地址
偏移地址16位
变化范围是 0000~FFFFH
仅有偏移地址,CPU 可以寻址 2^16 B = 2^6 KB = 64 KB 个内存单元
检测点2.2 第1题 就是根据这个解答的
乘法与移位1位
- 一个数据的 二进制 形式 左移1位,相当于 该数据的十进制形式 乘以 2
- 一个数据的 二进制 形式 左移N位,相当于 该数据的十进制形式 乘以 2的N次方
- 一个数据的 十六进制 形式 左移1位,相当于 该数据的十进制形式 乘以 16
- 一个数据的 十进制 形式 左移1位,相当于 该数据的是十进制形式 乘以 10
- 一个数据的 X进制 形式 左移1位,相当于 该数据的十进制形式 乘以 X
清醒一点
- CPU内的还是CPU外的?是数据还是地址?是16位还是数字十六?
-
总线?什么总线?连接谁与谁的?宽度是多少?