鱼C论坛

 找回密码
 立即注册
查看: 1643|回复: 4

汇编前三章的问题

[复制链接]
发表于 2014-2-20 19:10:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是,最小为什么,最大什么?
反过来,当段地址给定多少,CPU无论怎样变化偏移地址都无法寻到20000单元?
求答  求解  谢谢各位鱼油了
本人不经常在论坛  所以回复慢了   抱歉啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-20 19:56:12 | 显示全部楼层
第二个问题好办,SA(段地址)给0
0*10+FFFF(这个是最大的偏移了) = 0xffff(物理地址)
0xffff<0x20000 所以寻址不到。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-20 20:07:22 | 显示全部楼层
第一个问题(所以数值是16进制)
20000是一个物理地址
我们已知一个物理地址=段地址SA*10+偏移地址EA
又因为偏移地址是16位的,所以最大是FFFF
如果要让段地址最小,那么偏移地址就要越大,最大FFFF。
我们设 段地址*10 为X
则 X+FFFF = 物理地址
已知物理地址=20000
那么X=20000-ffff (你用WIndows计算器算算)
那么段地址就是 x/10 (因为我们设X为段地址*10)
s上面就是段地址最小,不过感觉最后的结果计算出来感觉不对 1001/10 ..
如果要让段地址最大,那么偏移地址就要最小 ,先设0。
打开计算器 20000/10 = 2000
一个段寄存器的最大值是FFFF
又因为FFFF>2000
所以 这个地址只需要段寄存器就够了,偏移地址保为0
所以最大是 2000
最小是 1000 (或许有点不准确)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-20 21:56:40 | 显示全部楼层
实地址模式下:

物理地址 = SA * 10H + 偏移地址
可知,物理地址、偏移地址,两者的最低位,必定是相同的。
当物理地址=20000H,偏移地址也只能是:XXX0H,取最大就是 FFF0H。
于是:
SA最小地址 = (20000H - FFF0H) / 16=10010H / 16 = 1001H。
SA最大地址=2000H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-21 04:15:56 | 显示全部楼层
谢谢各位的回复了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-29 23:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表