检测点2.2
本帖最后由 汝不知者花也 于 2020-6-12 15:59 编辑检测点2.2
(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH 。
解题过程:
物理地址=SA*16+EA
EA的变化范围为0h~ffffh
物理地址范围为(SA*16+0h)~(SA*16+ffffh)
现在SA=0001h,那么寻址范围为
(0001h*16+0h)~(0001h*16+ffffh)
=0010h~1000fh
检测点2.2
(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H 。
当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。
解题过程:
物理地址=SA*16+EA
20000h=SA*16+EA
SA=(20000h-EA)/16=2000h-EA
EA取最大值时,SA=2000h-ffffh=1001h,SA为最小值
EA取最小值时,SA=2000h-0h=2000h,SA为最大值
你也刚在学习 汇编基础吗- +个好友V: z100113一起互相交流探讨啊 //(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为__到__。
//(2)有一段数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应该满足的条件是:最小为__,最大为__。
//提示,反过来思考一下,当短地址给定为多少,CPU无论怎么变化偏移地址都无法寻到20000H单元?
//1:(10+0)H~(10+FFFF)H=10H~1000FH
//2:20000H-0H=20000H,最大SA=2000H;20000H-FFFFH=10001H,因为段地址必须为16的整数倍,所以SA最小为1001H。 我觉得你的答案是对的,结题解错了。。。。 sh0whigh 发表于 2020-6-28 14:31
我觉得你的答案是对的,结题解错了。。。。
谢谢指正 本帖最后由 405021688 于 2020-8-19 10:38 编辑
q tha wsj b 哥们,最后加错了,得有个F
解题过程:
物理地址=SA*16+EA
20000h=SA*16+EA
SA=(20000h-EA)/16=2000h-EA
EA取最大值时,SA=2000h-EA/16,同事EA最大的时候取值FFFFH,如何得出SA的值?感觉都不是一个整数。
麻烦有大神能指导一下
ZLLI 发表于 2020-8-23 17:09
解题过程:
物理地址=SA*16+EA
我算的时候,感觉得有个小数点{:10_266:} 第二题解题过程
物理地址=SA*16+EA
20000H=SA*16+(0000H to FFFFH)
SA=2000H-(0000H to 0FFFH)=2000H to 1001H 本帖最后由 alphadream 于 2021-3-13 15:12 编辑
以楼主和楼上几位的解析基础上,简化一下就是
已知前提EA最小~最大=0000H~FFFFH , SA*16+EA=20000H.求SA对应的最大最小值。(知识点:16进制数乘16,左移1位,反侧右移1位)。
最大-----SA*16+0000H=20000H; 最小-----SA*16+FFFFH=20000H;
SA+000H=2000H; SA+FFFH=2000H;
SA=2000H; SA=1001H; 感谢,知道自己错在哪里了
段地址 最小为1001h 最大值为 2000h
这样的话 物理地址 =sa*16+ea
选最小值 来计算
10010h+ffffh 等于2000fh
这就大于 20000h 了
百思不得解,求解惑啊啊 Salubrious 发表于 2021-5-24 18:08
段地址 最小为1001h 最大值为 2000h
这样的话 物理地址 =sa*16+ea
选最小值 来计算
题目是要求能取到20000H这个地址,而不是最大的地址是20000H
页:
[1]