王爽《汇编语言》中监测点2.2中第(2)题的问题
2.有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻找此单元。则SA应满足的条件是:最小为____,最大为____。答案是最小为1001H,最大为2000H。
第2题说明:因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。
但是我算出来第一个结果是段的起点地址是10001H,因为起点地址必须是16的倍数,那么为什么不是1000H,而要是1001H呢?还有,第2题后面的说明是什么意思呢?
请求前辈们指点迷津。:handshake
∵SA*10H+IP=20000H
∴SA=2000-IP/10
又IP∈
∴SA的最大值为IP=0时,此时SA=2000H
SA的最小值为IP=FFF0时(IP除以10H要等于整数),此时SA=2000H-FFFH=1001H
{:5_102:}能不能看懂呢?
看不懂啊,大哥,IP是偏移地址的话,为什么一开始要计算段地址就需要2000-IP/10呢? 李栋 发表于 2012-8-19 08:52 static/image/common/back.gif
看不懂啊,大哥,IP是偏移地址的话,为什么一开始要计算段地址就需要2000-IP/10呢?
SA*10H+IP=20000H 这步是最基本的,段地址左移一位加上偏移等于物理地址。看得懂吧。下面移项,然后同除以10H,不就得到SA=2000-IP/10了
是SA=(2000-IP/10)吧?大哥 李栋 发表于 2012-8-19 10:09 static/image/common/back.gif
是SA=(2000-IP/10)吧?大哥
有区别吗? 是 我打错了。是SA=(2000-IP)/10吧? 李栋 发表于 2012-8-19 20:30 static/image/common/back.gif
是 我打错了。是SA=(2000-IP)/10吧?
你数一下有几个零。 本帖最后由 搓搓 于 2013-11-15 14:26 编辑
我是这样考虑的 物理地址是段地址*16后+偏移地址得到的
现在物理地址给定 偏移地址与段地址的关系是:
偏移地址最大时候 物理地址则最小
8086计算机的偏移地址为64KB
则:最小为0 最大为FFFF
当偏移地址为0时 段地址为2000H (2000H*16+0H=20000H)既段地址最大为2000H
当偏移地址为FFFFH时 段地址为1000.1H 但是我们知道地址中没有小数这一说所以
1000.1H必须取一个整数 0.1要么舍去 要么进1 此时要注意的死 偏移地址也不可以取FFFFH 而是一个小于FFFFH的值
舍去后得到 1000H 此时20000H-1000H*16=10000H 超过偏移地址的最大值FFFF 则1000H不可取
进位后得到 1001H此时 20000H-1001H*16=FFF0H 这个值在0H-FFFFH 之内 则说明可取
既当物理地址为20000H时 段地址最大为2000H 最小为1001H
希望可以帮到你
页:
[1]