1771437751 发表于 2014-7-14 23:33:46

汇编:段的概念


2、有一数据存放在内存20000H单元中,先给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为1001H(为什么不是1000H)最大为2000H
3,、什么情况下段地址要加1?
http://c.hiphotos.baidu.com/zhidao/wh%3D600%2C800/sign=53fd63e3277f9e2f7060150e2f00c51c/d31b0ef41bd5ad6e2fb2b5ef81cb39dbb6fd3c68.jpg只有这种情况100FFH-10000H+1(这样才要加1吗?)

vkevke_3437 发表于 2014-7-15 09:01:23

本帖最后由 vkevke_3437 于 2014-7-16 21:51 编辑

2、因为内存地址等于SA*10h+偏移地址(偏移地址的最小寻址是0h,最大寻址是0FFFFh) SA最小为1001H*10H+FFF0H = 20000h 最大为2000H*10H+0 = 20000H
3、段地址加1 相当于增加了 1*10h (16个字节)例如: 内存址址1000:10 你也可以用 1001:0 表示

1771437751 发表于 2014-7-15 14:49:22

段地址不是要乘以16吗?

vkevke_3437 发表于 2014-7-16 08:24:54

1771437751 发表于 2014-7-15 14:49
段地址不是要乘以16吗?

十进制的16等于十六进制的10H

hfut_wangfei 发表于 2014-7-16 10:05:11

每一个内存单元地址可表示成多种形式的“段地址:偏移地址”,即内存地址=段地址*16+偏移地址。
其中用十六进制表示内存地址、段地址、偏移地址时,其取值范围为0000H~FFFFH,三个值中给定任意两个都能求出第三个。
给定一个内存地址,根据取值范围0000H~FFFFH,可分别求出段地址和偏移地址的具体取值范围,求解过程类似于线性规划问题。

1771437751 发表于 2014-7-16 17:44:48

vkevke_3437 发表于 2014-7-16 08:24
十进制的16等于十六进制的10H

那最小为1001的话(1001*10)+FFFF=2000F吧?他不是说要有一数据存放在20000H单元中吗?

vkevke_3437 发表于 2014-7-16 21:50:40

1771437751 发表于 2014-7-16 17:44
那最小为1001的话(1001*10)+FFFF=2000F吧?他不是说要有一数据存放在20000H单元中吗?

这样说吧 如果你的段地址为1000*10 +最大偏移地址FFFF= 1FFFFH 那满足不了20000H只能在段地址1000上加 1
上面是我写错了 已经改正   最小为 1001*10+FFF0 =20000H

1771437751 发表于 2014-7-16 22:39:11

vkevke_3437 发表于 2014-7-16 21:50
这样说吧 如果你的段地址为1000*10 +最大偏移地址FFFF= 1FFFFH 那满足不了20000H只能在段地址1000上 ...

哦哦 谢谢你的耐心解答 我懂了{:2_30:}

Angel丶L 发表于 2014-7-22 10:23:30

不要有意识的吧内存分为一个个段。
页: [1]
查看完整版本: 汇编:段的概念