李栋 发表于 2012-8-18 21:48:02

王爽《汇编语言》中监测点2.2中第(2)题的问题

2.有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻找此单元。则SA应满足的条件是:最小为____,最大为____。
答案是最小为1001H,最大为2000H。
第2题说明:因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。

但是我算出来第一个结果是段的起点地址是10001H,因为起点地址必须是16的倍数,那么为什么不是1000H,而要是1001H呢?还有,第2题后面的说明是什么意思呢?

请求前辈们指点迷津。:handshake

lukelqz 发表于 2012-8-18 22:47:37

∵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:}能不能看懂呢?

李栋 发表于 2012-8-19 08:52:39

看不懂啊,大哥,IP是偏移地址的话,为什么一开始要计算段地址就需要2000-IP/10呢?

lukelqz 发表于 2012-8-19 09:25:34

李栋 发表于 2012-8-19 08:52 static/image/common/back.gif
看不懂啊,大哥,IP是偏移地址的话,为什么一开始要计算段地址就需要2000-IP/10呢?

SA*10H+IP=20000H 这步是最基本的,段地址左移一位加上偏移等于物理地址。看得懂吧。下面移项,然后同除以10H,不就得到SA=2000-IP/10了

李栋 发表于 2012-8-19 10:09:25

是SA=(2000-IP/10)吧?大哥

lukelqz 发表于 2012-8-19 14:09:10

李栋 发表于 2012-8-19 10:09 static/image/common/back.gif
是SA=(2000-IP/10)吧?大哥

有区别吗?

李栋 发表于 2012-8-19 20:30:37

是    我打错了。是SA=(2000-IP)/10吧?

★壞尐孩★ 发表于 2013-11-14 20:36:20

李栋 发表于 2012-8-19 20:30 static/image/common/back.gif
是    我打错了。是SA=(2000-IP)/10吧?

你数一下有几个零。

搓搓 发表于 2013-11-15 14:02:37

本帖最后由 搓搓 于 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]
查看完整版本: 王爽《汇编语言》中监测点2.2中第(2)题的问题