检测点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。
不知道对不对,如果不对请给予提示谢谢了。 个人看法:
(1).10H+FFFFH=1000FH, 范围在0010H到1000FH
(2).SA*10H+偏移量=20000H;那么SA一定是16的倍数.偏移量最后一位一定和20000H最后一位相等.偏移量越大,SA越小,偏移量(max) = FFF0H,所以SA(min)=10010H; SA(max)不可大于20000H.
欢迎指正.
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
嗯,我SA(min)忘除以16了,谢谢 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-5-29 22:04
问题1你是正确的
问题2你是错误的
谢谢 这两个题目就是考察,已知物理地址,计算段地址的范围,需要加上偏移地址的范围0000H~FFFFH。如果知道段地址,那减去偏移地址,就得到物理地址了,物理地址了。 第一题第二个空答案是1000FH的请举爪!!! 1. 00010H 1000FH
2. SA(min) 1001H
SA(max) 2000H
无法寻到20000H: SA<1001H or SA>2000H
TZJ5200 发表于 2018-6-4 09:34
SA*16+EA=20000H
SA*10H+EA=20000H
可以看出:
非常感谢 看到这里就一切都明白了{:5_110:} 不是只能*16的倍数吗 这个是10的倍数视频没说啊 wudong552200 发表于 2019-7-4 01:03
这个是10的倍数视频没说啊
那后面是H(H哥哥那是16位的标志){:10_277:}
页:
[1]