汇编检测点2.2
1、給定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围是0010H到1000FH2、有一个数据存放在内存20000H单元中,现给定段地址为SA,若想用偏位地址寻到此单元,则SA应满足,最小为1001H,最大为2000H
解:物理地址=段地址*16+偏移地址
20000H=SA*16+偏移地址
由于16为十进制,转换为十六进制=10H
最小偏移地址=0H
最大偏移地址=FFFFH
最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H
最大SA=(20000H-0H)/10H=20000H/10H-0H/10H=2000H-0H=2000H
3、当sa<1001H 或者sa>2000H将无法寻到20000H单元 {:10_279:} 不错不错 谢谢,帮了大忙了 谢谢! 看着很绕 不好学。。。 醍醐灌顶,,, 最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H
为什么(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H。。。
不应该是(20000H-FFFFH)/10H=10001/10H么。。。 铛铛 发表于 2017-7-29 01:30
最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H
为什么(20000H-FFFFH)/10H=20000H/ ...
我也纠结了好半天 chappie 发表于 2017-8-23 21:08
我也纠结了好半天
有问题 第二道题怎么算都算不懂,求解释 meiyuexun 发表于 2017-10-9 12:44
第二道题怎么算都算不懂,求解释
第二题的解里面算得很清楚了吧,你哪里不懂 小阿肆 发表于 2017-10-16 14:38
第二题的解里面算得很清楚了吧,你哪里不懂
这个解的不对吧 20000H = SA*16+偏移地址,然后数学方法讨论:当偏移地址最小,取0H时,SA最大;当偏移地址取最大FFFFH时,SA求得最小 本帖最后由 zsong9@asu.edu 于 2017-11-13 09:45 编辑
第一题的答案应该是00010H-1000FH, 00010H少了一个零,写成0010H了.
第二题是这样想,第一步肯定使用20000H-FFFFH吧,得多少呢?得10001H.这就很尴尬了,因为段地址(16进制))向左偏移一位后一定是能被16整除的数,也就是说末尾位一定是零,只能得到10000H或者10010H,不可能得到10001H.所以段地址只能是1000H或者1001H.那么是选1000H还是选1001H呢?当然是1001H啦,因为1000H*16+FFFFH得1FFFFH,够不到20000H.但是1001H*16+FFF0H就是20000H了,所以答案中最小值就是1001H.{:10_254:} zsong9@asu.edu 发表于 2017-11-13 09:43
第一题的答案应该是00010H-1000FH, 00010H少了一个零,写成0010H了.
第二题是这样想,第一步肯定使用20000 ...
给赞一个{:5_91:} 为什么偏移地址的范围是0000H-FFFFH啊,是不是因为它是16位的?
可以 zsong9@asu.edu 发表于 2017-11-13 09:43
第一题的答案应该是00010H-1000FH, 00010H少了一个零,写成0010H了.
第二题是这样想,第一步肯定使用20000 ...
你仔细算一下1001x16+FFFFH等于多少呢?好像等于2000FH吧,大于20000H了,好吧?这个第二题,如果是1000的段地址,那就是1FFFFH,也不对,所以说,这个题就有问题,都说了,段地址应该是16的倍数,这个就特么不是16的倍数啊 楼主,你这个第二题解法有问题啊,物理地址=段地址x16+偏移地址,这里是正向算物理地址,应该是先把段地址向左偏移一位再加上偏移地址才对!你在解题的时候,直接把偏移地址带入进去向右偏移了一位,你觉得解出来对吗?我感觉有问题。还是应该先用物理地址-偏移地址再把基础地址向右偏移一位才是段地址吧? W_H_I 发表于 2017-12-28 11:00
楼主,你这个第二题解法有问题啊,物理地址=段地址x16+偏移地址,这里是正向算物理地址,应该是先把段地址 ...
不用吧,直接用物理地址-偏移地址,然后直接除以16的十进制10H就可以了啊,正向乘10H的时候就代表了偏移吧,(乘以10H向左偏移以为,除以10H向右偏移一位)。。我真没想到偏移地址的范围,所以一开始做题无从下手。
页:
[1]
2