狂潮丶 发表于 2013-7-29 08:42:23

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:36

狂潮丶 发表于 2013-7-29 09:14:57

SilverMagic 发表于 2013-7-29 09:11 static/image/common/back.gif
我会告诉版主其实我是来看妹子的么

额,我可是为了让大家学习进步呢。

a02201023 发表于 2013-7-29 12:24:01

留待楼下解决吧

a764934018 发表于 2013-8-1 14:21:45

欠你的幸福 发表于 2013-8-1 22:51:05

我个人见意呀,, 学习的时候有美女相陪其实能让人心情愉快,, 各位同学,, 你们说对不,
   见意还是来几张吸引眼球的图片,,

xtso_fishc 发表于 2013-8-3 17:45:32

谢谢版主 分享   版主辛苦了    多多学习   天天进步

wangjie5540 发表于 2013-8-15 22:51:47

新手检测用,就当是自己简直的见证了。谢谢斑竹的努力

772317495 发表于 2013-9-3 17:30:38

感谢楼主解答似懂非懂~~

772317495 发表于 2013-9-3 17:32:05

当初看到问题的时候一点头绪也没有,无从下手~当看到楼主的解答后,明白了~ 公式就是用来套用的!!!!

772317495 发表于 2013-9-3 17:33:55

百度上的答案是00012000   还是楼主解答的详细~~

Ivan_t 发表于 2013-9-19 00:12:49

感谢分享解答思想,我还在想20000H--FFFFH=10001H,再用10001H/16,win计算器结果BA2(这是如何计算的,不是很懂,LZ可以帮忙解答吗?{:1_1:})

回忆あ殇痛 发表于 2013-9-22 10:39:05

谢谢斑竹..ps.一楼图不错..

bubu 发表于 2014-3-25 12:55:27

我有问题:段地址不是16的倍数吗?我认为第二题答案应该为1010H和2000H。

www5956 发表于 2014-4-27 15:48:07

对头的因该是2000H

暗夜墨羽 发表于 2014-5-4 19:56:12

果然,在其他地方下载到的答案是错的,第二题我想的和答案不一样,这里的答案才是正确的

纯属宅男 发表于 2014-10-11 21:46:35

学汇编还真是要头脑灵活啊:mad:

RookieぁSigns 发表于 2015-1-18 14:13:50

Ivan_t 发表于 2013-9-19 00:12
感谢分享解答思想,我还在想20000H--FFFFH=10001H,再用10001H/16,win计算器结果BA2(这是如何计算的,不 ...

不应该除以16应该除以10,16是十进制,十六进制那里来的16最大才F

dnbt 发表于 2015-6-1 18:07:27

理解了一点点

mlya 发表于 2016-5-21 17:22:01

第二题还可以用20000H减去ffffH,得到10001H,然后除以16,得到的1000H就已经查不到所要的地址了,所以最小保证能查到的段地址为1001H
页: [1] 2
查看完整版本: Assembly language 检测点2.2