注册 登录
编程论坛 汇编论坛

理解能力较差,求大神帮忙解决下!感激不尽啦

az71566 发布于 2013-09-13 21:04, 1004 次点击
(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。    为什么不是00010H到CPU最大的寻址范围1FFFFH,而是1000FH呢?
(2)有一数据存放在内存 20000H单元中,现在定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是;最小为0001H,最大为2000H。  0001H是不是CPU寻址范围内最小的值? 最大的为什么不是20000H而是2000H?
只有本站会员才能查看附件,请 登录

段地址加偏移地址怎么会等于20?  
6 回复
#2
hu9jj2013-09-13 21:37
不要以为段地址16位加偏移地址16位之后就会有32位。因为当初INTEL是这样设计的,段地址向左移4位之后再加上偏移地址,组成实际寻找的物理地址。
即:
设段地址为10101010 10101010
偏移地址为01010101 01010101

将段地址左移4位加偏移地址
  1010101010101010
+     0101010101010101
————————————
  10101111111111110101
组成了20位的地址。

[ 本帖最后由 hu9jj 于 2013-9-13 21:41 编辑 ]
#3
hu9jj2013-09-13 21:39
可能是当初的设计师们认为计算机有20位的寻址能力就足够了吧。
#4
az715662013-09-13 22:09
那前面的俩个问题呢?是怎么算的额
#5
hu9jj2013-09-14 07:52
这个问题理解了,稍加思考,前面两个问题应该容易解决的。
1、可以通过运算获得寻址范围。段地址是0001H不变,偏移地址可以从0000H到FFFFH之间变化
寻址的最低地址是:
 0001H
+0000H
————
 00010H
寻址的最高地址是:
 0001H
+FFFFH
————
 1000FH
#6
Explorerlxz2013-09-14 21:21
16位数据总线,20位地址总线决定了如果给定一个段地址(基址),加上偏移地址最多只能寻址64Kb,即2^16!
段基址乘以16加上偏移地址才是实际地址!(16=10H,十进制与十六进制转换)
(1)段地址0001H*10H+偏移地址(0H到FFFFH),所以寻址范围是00010H到1000H
(2)已知物理地址是20000H,由上面公式
设段地址为X,
则X*10H+0H<=20000H,
且X*10H+FFFFH>=20000H
因此1000H<=X<=2000H
#7
Explorerlxz2013-09-15 18:02
昨天写错了,应该是1001H<=X<=2000H
1