surongre 发表于 2011-10-29 19:57:08

关于检测点2.2的菜鸟问题

题目是有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为____,最大为_______。

小甲鱼给的答案是:
因为题目要求是要物理地址最终为20000H。
我们知道偏移地址最小为0H,最大为FFF0H。   仅靠偏移地址来寻址最多可以寻64KB内存单元,64KB最大值不是FFFF吗?怎么是FFF0?

我们要求段地址能够取到的最小值,即要和偏移地址最大值配合,所以段地址应该为1001H,偏移地址为FFF0H:1001H * 10H + FFF0H == 20000H。
这个段地址不是应该×16么,怎么X10了?
我们要求段地址能够取到的最大值,即要和偏移地址最小值配合,所以段地址应该为2000H,偏移地址为0H。


表示看视频好几遍了,对这个还是半解一知,顺便问一下,20位的地址总线寻址能力是1MB,这个是怎么算的?2的20次方/1024吗?这里的位是指bit还是byte?

wish 发表于 2011-10-29 21:08:08

首先回答比较容易的一个问题
物理地址=段地址*16+偏移地址
因为是用16进制表示 所以书上的意思*16就是满16进1的意思
你可以把16理解为10H
你自己换算一下 10进制16换算为16进制就是等于10H

wish 发表于 2011-10-29 21:22:27

20位的地址总线求寻址能力按公式就是2的20次方就等于1048576。因为内存单元都是以字节存放也就是BTYE
根据1KB=1024B 1MB=1024KB
经过换算 1048576/1024=1024
1024/1024=1MB

wish 发表于 2011-10-29 21:30:36

(2)一数据存放在内存20000H单元中,现给定段地址为SA,若用偏移地址寻到此单元,则SA最小最大各多少?
20000H=(SA*16+EA);EA取值范围:0000H~FFFFH---->SA*16=(20000H~10001H)
则SA为10001H/16~2000H;注意10001H/16取整应+1,则SA最小为1001H,最大为2000H。

lsmir2 发表于 2011-11-2 19:35:02

20000H
你把20000H减去FFFFH等于 10001 那还怎么搞

掌心的呵护 发表于 2011-11-2 19:44:26

lsmir2 发表于 2011-11-2 19:35 static/image/common/back.gif
20000H
你把20000H减去FFFFH等于 10001 那还怎么搞

这就近似了
你总不能让ffff再加一个数吧
只好让它减去一个数,又能误差不是很大
使得2000-能被10h整除
所以只能是fff0了

surongre 发表于 2011-11-3 10:32:38

谢谢LS各位,研究研究去

eons 发表于 2011-11-3 20:09:15

16是十进制数,16这个数在十六进制下是10H。
20000H-FFFFH=10001,请问这个数你减完之后,怎么分开?五位数的地址是,段地址*16+偏移地址 的。
那么你减到10001之后怎么分解开?
那把FFFFh改成FFF0H之后,20000H-FFF0H=10010H,分解出来就是1001:0,那么取值最大就是FFF0,最小取值就是1001. 1001*16+FFF0H=20000H
页: [1]
查看完整版本: 关于检测点2.2的菜鸟问题