教官 发表于 2016-1-28 17:35:10

分段是怎么计算的?

本帖最后由 教官 于 2016-1-28 17:46 编辑

汇编语言--段的概念

地址10000H--100FFH的内存单元组成一个段,该段的起始地址(寄出地址)为10000H,段地址为
1000H,大小为100H;我们可以认为地址10000H--1007FH,10080H--100FFH的内存单元组成两个段,
她们的起始地址(寄出地址)为:10000H和10080H,段地址为:1000H和1008H,大小都为80H.

问题1:大小为100H是怎么来的?
问题2:1007FH和10080H是怎么分段的?
问题3:大小都为80H又是怎么来的?
分段的过程是怎么计算的,我都搞晕了。能详细说明一下么?


教官 发表于 2016-1-28 20:32:07

问题1:1007H-10000H=100H
问题3:100H=256   256/2=128   128=80H

现在就是不知道怎么分这个平均值,又刚好都是80H

yundi 发表于 2016-1-28 23:44:47

书中这段话的目的是想说明 内存位置是如何用段+偏移的方式来表示的,不必拘泥具体数值
因为8086cpu地址总线宽度为20,能表示2^20即00000~FFFFF个内存位置,但是8086cpu寄存器只有16位,只能保存0000~FFFF的数据,所以想到了段+偏移的方法.
问题1:大小为100H是怎么来的?100FFH-10000H+1 = 100H,表示这个段的大小
问题2:1007FH和10080H是怎么分段的?随便分的,你也可以分成不相等的两个段,也可以分成3个段.
问题3:大小都为80H又是怎么来的?段尾-段首+1,就像问 从3到9总共有几个数,怎么算一样.

教官 发表于 2016-1-29 09:45:16

yundi 发表于 2016-1-28 23:44
书中这段话的目的是想说明 内存位置是如何用段+偏移的方式来表示的,不必拘泥具体数值
因为8086cpu地址总线 ...

清楚明白 ,Thanks

兰陵月 发表于 2016-3-9 23:41:10

其实8086CPU它只认识这些5位的十六进制地址:10000H--1007FH,10080H--100FFH
至于怎么分随便你,你喜欢就好,只要最后结果相加等于这个5位数地址即可。
页: [1]
查看完整版本: 分段是怎么计算的?