“地址 10000H~100FFH 的内存单元组成一个段,这段的起始地址(基础地址) 为10000H,段地址为1000H,大小为 100H;我们也可以认为地址 10000H~1007FH 的内存单元组成两个段,它们的起始地址(基础地址)为: 10000H和 10080H,段地址为:1000H和1008H,大小都为80H” (图略,不用看图应该可以明白是什么意思吧。)
出自《汇编语言》第二版 王爽 清华大学出版社 P24
上面的起始地址 10000H 转化为段地址 1000H 我了解,就是向左退一位,也就是/16的意思. 但是后面的大小为 100H是什么意思? 寻址能力么?
下面的大小大小 80H同样不能理解。 就高手指点一二。
顺便说说汇编理论重要么? 先谢谢了。
8086地址总线20位,则可寻址空间1M。
但它的数据线16位,要是处理地址,一个地址就装不下。
于是就采用段基址和偏移地址的方法。把1M的空间分为 64K个段地址,如00000h、00010h、00020h……ffff0h,一共64K个。
这些段地址的特征是最低四位(化成二进制来看)为0.于是把段地址的最低四位省略这样就能装入寄存器了,cpu知道最低四位为零。
寻址时,cpu把段寄存器里的16位地址自动左移四位这样就还原为真正的段地址,再加上偏移就得到物理地址了。
---------------------------------
其实就是一个历史遗留问题,硬件工程师为了要和以前的机器兼容才设计得这么复杂。
可以大致这样理解内存是n行16列的表格(当然实际上并没有行和列)。
第10000H到100FFH单元格组成一个“表格”,这“表格”从第10000H号单元格开始,或者说从第1000H行,大小是100H行。
也可以认为地址10000H到1007FH 的单元格组成两个“表格”,它们分别从10000H号单元格和10080号单元格开始,或者说从1000H行和1008H行开始,大小都为80H行