奥普瓯江 发表于 2018-5-23 14:30:03

检测点2.2

本帖最后由 奥普瓯江 于 2018-5-23 14:35 编辑

(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010到0001F。
(2)有一数据存放内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为1001H,最大为2000H。
提示,反过来思考一下,当段地址给定为多少,CPU无论怎么变化偏移地址都无法寻找到20000H单元?
答:当段地址小于不等于1001H或者大于不等于2000H时无论CPU怎么变化偏移地址都无法找到20000H单元,因为定位内存中物理地址的公式是,20位物理地址 = 段地址 * 16 + 偏移地址,偏移地址的取值范围为0000H-FFFFH。

不知道对不对,如果不对请给予提示谢谢了。

1070057369 发表于 2018-5-29 21:15:27

个人看法:
      (1).10H+FFFFH=1000FH, 范围在0010H到1000FH
      (2).SA*10H+偏移量=20000H;那么SA一定是16的倍数.偏移量最后一位一定和20000H最后一位相等.偏移量越大,SA越小,偏移量(max) = FFF0H,所以SA(min)=10010H; SA(max)不可大于20000H.
欢迎指正.

人造人 发表于 2018-5-29 22:04:55

1070057369 发表于 2018-5-29 21:15
个人看法:
      (1).10H+FFFFH=1000FH, 范围在0010H到1000FH
      (2).SA*10H+偏移量=20000H;那么SA ...

问题1你是正确的
问题2你是错误的

SA * 10H + 偏移 = 20000H

SA 最大,偏移最小
SA = 2000H,偏移为 0
2000H * 10H + 0 = 20000H
SA(max)为2000H


SA 最小,偏移最大
SA最小是多少还不知道,只是偏移最大只能是 FFFFH,不能再大了
所以
SA * 10H + FFFFH = 20000H
SA = (20000H - FFFFH) / 10H
SA = 10001H / 10H
SA = 1000H

但是 10001H / 10H 的结果并不是整数
就像 10 / 3 = 3 一样,只保留了整数

10 / 3 = (10/3)(3分之10)
(10/3)(3分之10) * 3 = 10
被除数 / 除数 = 商
商 * 除数 = 被除数


因为 10001H / 10H = 1000H
只保留了整数
也就是说
1000H * 10H != 10001H

1000H * 10H = 10000H
10000H + FFFFH = 1FFFFH
也就是说
当SA = 1000H 时
SA * 10H + FFFFH
1000H * 10H + FFFFH = 10000H + FFFFH = 1FFFFH
偏移地址已经是最大了,但是物理地址还是达不到 20000H
这说明SA 太小了

SA + 1 = 1001H
SA * 10H + FFFFH
1001H * 10H + FFFFH = 1001H * 10H + FFFFH = 10010H + FFFF = 2000FH

当SA = 1000H 时太小了,偏移地址无论是多少,物理地址都达不到 20000H
当SA = 1001H 时貌似太大了?
不,首先SA肯定不是 1000H
如果SA是 1001H,那么偏移地址就不能最大,那么应该是多少?

SA * 10H + ? = 20000H
1001H * 10H + ? = 20000H
? = 20000H - (1001H * 10H)
? = FFF0H

所以
SA(min) = 1001H 偏移地址为 FFF0H
1001H * 10H + FFF0H = 20000H

1070057369 发表于 2018-5-29 22:38:40

嗯,我SA(min)忘除以16了,谢谢

TZJ5200 发表于 2018-6-4 09:34:03

SA*16+EA=20000H
SA*10H+EA=20000H
可以看出:
SA*10H是10H的倍数。
20000H是10H的倍数。
推出:EA是10H的倍数。
因为,EA最大值为FFFFH,且EA为10H的倍数。
所以,EA最大只可取值FFF0H。
SA*10H=20000H-FFF0H=10010H.
所以,SA最小=1001H。

补充:实际EA最大值为FFFFH,但是因为题目的限制,导致EA不能取到FFFFH,看着有点别扭,就像完成一个工作需要7.5人,但人没有半个,而7个人不能完成工作,你只能取8个人一个道理。慢慢理解就明白这个道理了。

奥普瓯江 发表于 2018-6-7 17:43:43

人造人 发表于 2018-5-29 22:04
问题1你是正确的
问题2你是错误的



谢谢

zyfllz 发表于 2018-8-5 14:58:29

这两个题目就是考察,已知物理地址,计算段地址的范围,需要加上偏移地址的范围0000H~FFFFH。如果知道段地址,那减去偏移地址,就得到物理地址了,物理地址了。

sunwenc 发表于 2018-11-19 00:05:54

第一题第二个空答案是1000FH的请举爪!!!

kkxxx 发表于 2019-1-5 15:02:56

1. 00010H 1000FH

2. SA(min) 1001H
    SA(max) 2000H

无法寻到20000H:   SA<1001H or SA>2000H

夏冷莫 发表于 2019-5-29 10:51:17

TZJ5200 发表于 2018-6-4 09:34
SA*16+EA=20000H
SA*10H+EA=20000H
可以看出:


非常感谢 看到这里就一切都明白了{:5_110:}

wudong552200 发表于 2019-7-4 01:02:03

不是只能*16的倍数吗

wudong552200 发表于 2019-7-4 01:03:08

这个是10的倍数视频没说啊

奥普瓯江 发表于 2019-7-9 12:58:42

wudong552200 发表于 2019-7-4 01:03
这个是10的倍数视频没说啊

那后面是H(H哥哥那是16位的标志){:10_277:}
页: [1]
查看完整版本: 检测点2.2