. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  请老手高手新手帮小弟看看检测2.2这样理解对吗?  [待解决] 回复[ 3次 ]   点击[ 404次 ]  
cghost
[帖 主]   [ 发表时间:2011-01-26 10:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-17 13:40
检测2.2(第25页)
(1)        解:偏移地址16位,变化范围0~FFFFH,由于段地址为:0001h,所以CPU的寻址范围为00010H到1000F。
(2)        解:内存的物理地址址=基址址(段地址*16)+偏移地址,偏移地址变化范围0~FFFFH,如果SA最小则偏移取大,20000H=SA*10H+FFFFH,SA*16=(20000H-FFFFH)=65537,由段地址*16必然是16的陪数,而偏移地址的最大取值只能是FFFFH,物理地址已经是固定的了,怎么解决呢?要么增大段地址,减小偏移地址;要么减小段地址,增大偏移地址;但于偏移地址最大只能是FFFFH,所以只能选择前者。20000H-FFFFH=10001H,10001H/16=1000余数为1,要满足16的倍数,只能在基地址上加上15(即十六进制F)偏移地址上减去F, 所以基地址为10010,SA最小为1001,段地址最大为FFF0H。第二空这个很好算了,SA=2000H。
a88510
[第1楼]   [ 回复时间:2011-01-28 16:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-26 21:21
我也是这么想的,书上前面说了必须是16的倍数,我现在准备查答案= =
vlan100
[第2楼]   [ 回复时间:2011-02-21 10:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-24 17:03
把式子列出来就容易看出来了
SA*16+EA=20000H
-->SA=(20000H/10H)-(EA/10H)
-->当EA最大时,SA最小,所以EA=FFFFH的时候,SA最小,计算一下SA=2000H-0FFFH=1001H
-->反之,当EA最小也就是等于0时,SA最大,此时SA=2000H-0=2000H
langzimou
[第3楼]   [ 回复时间:2011-03-04 08:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-23 12:29
回复:[第2楼]
------------------
请问,-->当EA最大时,SA最小,所以EA=FFFFH的时候,SA最小,计算一下SA=2000H-0FFFH=1001H 
那么FFFFH/10H的结果为什么会是1001H呢?谢谢
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved