教官 发表于 2016-1-29 11:07:40

汇编检测点2.2

1、給定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围是0010H到1000FH


2、有一个数据存放在内存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单元

jingzhengran 发表于 2016-1-30 19:16:33

{:10_279:} 不错不错                              

nuoguanguan 发表于 2016-2-16 16:28:01

谢谢,帮了大忙了

SDULZY 发表于 2016-2-19 23:55:01

谢谢!

anaf 发表于 2016-4-21 20:06:39

看着很绕 不好学。。。

蜗牛狂飙 发表于 2017-7-22 22:16:50

醍醐灌顶,,,

铛铛 发表于 2017-7-29 01:30:56

最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H

为什么(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H。。。
不应该是(20000H-FFFFH)/10H=10001/10H么。。。

chappie 发表于 2017-8-23 21:08:51

铛铛 发表于 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:09:00

chappie 发表于 2017-8-23 21:08
我也纠结了好半天

有问题

meiyuexun 发表于 2017-10-9 12:44:07

第二道题怎么算都算不懂,求解释

小阿肆 发表于 2017-10-16 14:38:10

meiyuexun 发表于 2017-10-9 12:44
第二道题怎么算都算不懂,求解释

第二题的解里面算得很清楚了吧,你哪里不懂

为你敲击幸福 发表于 2017-11-6 22:48:35

小阿肆 发表于 2017-10-16 14:38
第二题的解里面算得很清楚了吧,你哪里不懂

这个解的不对吧

为你敲击幸福 发表于 2017-11-6 22:50:23

20000H = SA*16+偏移地址,然后数学方法讨论:当偏移地址最小,取0H时,SA最大;当偏移地址取最大FFFFH时,SA求得最小

zsong9@asu.edu 发表于 2017-11-13 09:43:38

本帖最后由 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:}

xzzsj 发表于 2017-12-14 19:39:08

zsong9@asu.edu 发表于 2017-11-13 09:43
第一题的答案应该是00010H-1000FH, 00010H少了一个零,写成0010H了.

第二题是这样想,第一步肯定使用20000 ...

给赞一个{:5_91:}

hsq 发表于 2017-12-22 14:54:28

为什么偏移地址的范围是0000H-FFFFH啊,是不是因为它是16位的?

tkd云天 发表于 2017-12-26 10:26:14

可以

W_H_I 发表于 2017-12-28 10:56:58

zsong9@asu.edu 发表于 2017-11-13 09:43
第一题的答案应该是00010H-1000FH, 00010H少了一个零,写成0010H了.

第二题是这样想,第一步肯定使用20000 ...

你仔细算一下1001x16+FFFFH等于多少呢?好像等于2000FH吧,大于20000H了,好吧?这个第二题,如果是1000的段地址,那就是1FFFFH,也不对,所以说,这个题就有问题,都说了,段地址应该是16的倍数,这个就特么不是16的倍数啊

W_H_I 发表于 2017-12-28 11:00:29

楼主,你这个第二题解法有问题啊,物理地址=段地址x16+偏移地址,这里是正向算物理地址,应该是先把段地址向左偏移一位再加上偏移地址才对!你在解题的时候,直接把偏移地址带入进去向右偏移了一位,你觉得解出来对吗?我感觉有问题。还是应该先用物理地址-偏移地址再把基础地址向右偏移一位才是段地址吧?

杨kkk 发表于 2018-1-2 21:19:57

W_H_I 发表于 2017-12-28 11:00
楼主,你这个第二题解法有问题啊,物理地址=段地址x16+偏移地址,这里是正向算物理地址,应该是先把段地址 ...

不用吧,直接用物理地址-偏移地址,然后直接除以16的十进制10H就可以了啊,正向乘10H的时候就代表了偏移吧,(乘以10H向左偏移以为,除以10H向右偏移一位)。。我真没想到偏移地址的范围,所以一开始做题无从下手。
页: [1] 2
查看完整版本: 汇编检测点2.2