
一道简单的汇编基础题
有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小值为____,最大值为_____.1000.1H2000H我...
有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小值为____,最大值为_____.
1000.1H 2000H我算是这样,有人算的是1001H 我怎么算也算不成那样的,真气人。 展开
1000.1H 2000H我算是这样,有人算的是1001H 我怎么算也算不成那样的,真气人。 展开
2个回答
展开全部
sa *10 + offset(即段内偏移值) = 20000h
sa = (20000h - offset) /10h,offset的取值范围是[0, 0FFFFh]
用最小的offset值0可以得到最大的sa = 2000h
用最大的offset值0FFFFh算,得到sa = 1000.1h, 取整是1000h, 验算下
1000h*10 + 0FFFFH = 1FFFFH, 访问不到20000h内存单元
所以1000h小了点,换1001h, 1001h *10 + 0FFFFH = 2000FH, 可以访问到20000h,
所以sa最小值是1001h
sa = (20000h - offset) /10h,offset的取值范围是[0, 0FFFFh]
用最小的offset值0可以得到最大的sa = 2000h
用最大的offset值0FFFFh算,得到sa = 1000.1h, 取整是1000h, 验算下
1000h*10 + 0FFFFH = 1FFFFH, 访问不到20000h内存单元
所以1000h小了点,换1001h, 1001h *10 + 0FFFFH = 2000FH, 可以访问到20000h,
所以sa最小值是1001h
展开全部
物理地址 = 段地址 * 10H + 偏移地址
其中,乘以 16,就是把段地址左移了四位。
再相加后,很显然,物理地址和偏移地址的最低四位是相同的。
已知物理地址是 20000H,把偏移地址再取最大,即为:FFF0H。
于是,方程应该这样列:20000H = SA * 16 + FFF0H
由此即可求出最小的 SA = 1001H。
这个算法,可以保证正确。
不用像采纳答案那样,还需要验算、修正。
其中,乘以 16,就是把段地址左移了四位。
再相加后,很显然,物理地址和偏移地址的最低四位是相同的。
已知物理地址是 20000H,把偏移地址再取最大,即为:FFF0H。
于是,方程应该这样列:20000H = SA * 16 + FFF0H
由此即可求出最小的 SA = 1001H。
这个算法,可以保证正确。
不用像采纳答案那样,还需要验算、修正。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询