. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
主题 : :  检测2.2  [待解决] 回复[ 12次 ]   点击[ 766次 ]  
be900
[帖 主] [ 发表时间:2010-05-07 11:56 ] 
荣誉值:0
信誉值:0
注册日期:2010-03-29 15:49
以下是我的答案,帮忙检查下
1. 00010H~1000FH
物理地址=SA*16+EA
最小值: 0001H*16+0H=00010H
最大值: 0001H*16+FFFFH=1000FH
--------------------------------------------
2. 1001H~2000H
20000H=SA*16+EA 
最大值: 20000H=SA*16+0H  ==> SA*16=20000H
最小值: 20000H=SA*16+FFFFH  ==> SA*16=10001H

>>>SA需要是16的倍数. 那么公式算出来的答案1001H是不对的. 希望高手指点下...
----------------------------------------------
3. 
20000H=SA*16+EA
EA的取值范围是0H~FFFFH
当SA*16+0>20000H时, 得到SA>2000H
当SA*16+FFFFH<20000H时, 得到SA<1000H
flong158
[第2楼] [ 回复时间:2010-05-08 01:08 ] 
荣誉值:0
信誉值:0
注册日期:2010-05-08 00:59
算法没错,算出来最小值是10001H没错,但这个结果与段地址的定义冲突,是无效地址,所以要往右找最近的符合定义的有效地址为10010H(往左推就超出范围了),倒推到段地址即为1001H。

这个知识点要注意,段地址是四位数,如1000H、1001H,在后面加0是为了定义一种计算方法,在段地址设定好的前提下,如设定好是1000H,就只能以10000H去计算,不存在所谓的10001H、10002H。。。等等,这也是其定义要强调是16的整数的意思。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved