Assembly language 检测点2.2
本帖最后由 狂潮丶 于 2013-7-29 09:33 编辑检测点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/16
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值
EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值
这里的ffffH/16=fffh是通过WIN自带计算器算的
按位移来算确实应该为fff.fh,这里小数点后的f应该是省略了
单就除法来说,应有商和余数,但此题要求的是地址最大和最小,所以余数忽略了
如果根据位移的算法(段地址*16=16进制左移一位),小数点后应该是不能省略的
我们可以反过来再思考下,如果SA为1000h的话,小数点后省略
SA=1000h,EA取最大ffffh,物理地址为1ffffh,将无法寻到20000H单元
这道题不应看成是单纯的计算题
SilverMagic 发表于 2013-7-29 09:11 static/image/common/back.gif
我会告诉版主其实我是来看妹子的么
额,我可是为了让大家学习进步呢。 留待楼下解决吧 我个人见意呀,, 学习的时候有美女相陪其实能让人心情愉快,, 各位同学,, 你们说对不,
见意还是来几张吸引眼球的图片,, 谢谢版主 分享 版主辛苦了 多多学习 天天进步 新手检测用,就当是自己简直的见证了。谢谢斑竹的努力 感谢楼主解答似懂非懂~~ 当初看到问题的时候一点头绪也没有,无从下手~当看到楼主的解答后,明白了~ 公式就是用来套用的!!!! 百度上的答案是00012000 还是楼主解答的详细~~ 感谢分享解答思想,我还在想20000H--FFFFH=10001H,再用10001H/16,win计算器结果BA2(这是如何计算的,不是很懂,LZ可以帮忙解答吗?{:1_1:}) 谢谢斑竹..ps.一楼图不错.. 我有问题:段地址不是16的倍数吗?我认为第二题答案应该为1010H和2000H。 对头的因该是2000H 果然,在其他地方下载到的答案是错的,第二题我想的和答案不一样,这里的答案才是正确的 学汇编还真是要头脑灵活啊:mad: Ivan_t 发表于 2013-9-19 00:12
感谢分享解答思想,我还在想20000H--FFFFH=10001H,再用10001H/16,win计算器结果BA2(这是如何计算的,不 ...
不应该除以16应该除以10,16是十进制,十六进制那里来的16最大才F 理解了一点点 第二题还可以用20000H减去ffffH,得到10001H,然后除以16,得到的1000H就已经查不到所要的地址了,所以最小保证能查到的段地址为1001H
页:
[1]
2