. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
主题 : :  有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件为最小()最大()?  [待解决] 回复[ 12次 ]   点击[ 815次 ]  
senhueibian
[帖 主] [ 发表时间:2009-08-21 13:34 ] 
荣誉值:0
信誉值:0
注册日期:2009-08-04 20:36
有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件为最小()最大()? 
我根据CPU寻址的公式:物理地址=段地址*16 +偏移地址 得到: 
20000H=SA *16+偏移地址 
SA=(20000-最大的偏移地址)\16 
SA=(20000-FFFF)\16 
SA=10001\16 
按教材上说的段地址*16=16进制左移一位,那相反则应该等于10001右移一位即1000.1(由于本人初次涉及16进制乘除法,还请各位老师指点)出现了小数位?看答案上说的却是1001H,在这里有点不解,请各位前辈帮忙解答一下,十分感谢!
tonyones
[第8楼] [ 回复时间:2009-11-12 17:20 ] 
荣誉值:0
信誉值:0
注册日期:2009-11-12 10:44
楼主既然已经计算到 SA=1000.1 这时就稍加判断就能得出结果
1000.1这个值你只要把它当做一个SA的理论上底线值就好,SA至少是大于等于1000.1的,所以SA只能取值1001h,进一步举例说明:
    如果取值为1000h,此时SA*16+EA的范围是10000h~1FFFFh,正好取不到20000h的值;
    而当SA取值1001h时,SA*16+EA的范围是10010h~2000fh,是可以取到20000h的值的。
  所以正确答案是1001h
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved