一个简单的汇编问题

题目是这样的:一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻找到此单元,则SA应满足最小值和最大值各为多少。本人初学汇编,还望高人指点,在此谢过... 题目是这样的:一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻找到此单元,则SA应满足最小值和最大值各为多少。
本人初学汇编,还望高人指点,在此谢过了
展开
 我来答
沙支夸依
2010-08-03 · TA获得超过1281个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:323万
展开全部
从题目可以看出你问的应该是8086,下的汇编问题。
首先讲讲背景知识吧。早期PC地址总线只有20根,也就是说,系统可以寻址2的20次方,即1M Byte.可是我们的8086的寄存器没有20位的,只有16位,比如CS、DS、ES、SS段基址寄存器,AX,BX这些通用寄存器,都是16位的。所以,要寻址1M Byte的空间。只能使用这种“段+偏移”的二维方式表示。
举例来说,0000:0401 (以下表示地址的数字均为16进制)这个地址,按前述的计算方式,实际对应的物理单元地址是 段地址0 * 16 +偏移地址0401,即 00401 处的物理单元;同一个物理单元也可由 0040:0001 这对段/偏移量来表示(计算方法相同),或者由 003F:0011 表示(003F0+0011)= 0401。
---------------------------------------------
OK,说到这里,背景你应该已经看的差不多了。我们就来讨论你问的这个问题吧.20000H这个地址单元,SA(段基址) 最大值很好确定,只要偏移最小,SA自然是最大的喽。所以MAXsa=20000H/10H = 2000H
那MINsa呢?
当然是偏移最大的时候,SA自然最小了。可是什么时候才是偏移最大呢?
FFFFH?当然不行。因为我们目标地址单元最后四位是0H,所以偏移的最低四位也必须是0.即最大偏移是FFF0H喽。那剩下的,应该好算了吧。套用公式, MINsa*10H+FFF0H=20000H <==> MINsa = 1001H
-----------------------------
喽索了半天,最后得到的极限值就是:
1001:FFF0 = 20000H
2000:0000 = 20000H
baitang3671b
2010-08-04 · TA获得超过5040个赞
知道大有可为答主
回答量:4421
采纳率:31%
帮助的人:1108万
展开全部
一楼分析的很细,达到大学老师的水平了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
080301087
2010-08-04
知道答主
回答量:25
采纳率:0%
帮助的人:18.3万
展开全部
我也在为此题纠结,学习了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式