首先需要明白一个问题是,段是什么?
段是站在CPU的角度对内存的一种逻辑上的划分。由于8086的cpu无法直接表示20位的物理地址, 所以,只好采用2个16位的地址来表示一个20位的物理地址, 而这2个16位的地址一个称之为基地址,一个称之为偏移地址, 基地址也叫做段地址,而这个段的地址通常就存储在段寄存器中。段是cpu管理内存的一种手段和方式。
段的大小是多少?
段的偏移是从0000H到FFFFH, 这其中包括了0000和FFFF。段是逻辑上的划分, 所以段是可以重叠的, 一个段的开始地址、结束地址和另一个段的开始地址、结束地址,这四个地址完全可以一样, 所以最小值可以认为是0, 最大值是FFFFH-0000H + 1H = 10000H, 也就是64KB
在计算物理地址时,段地址究竟偏移多少位?或者乘以多少?
段地址偏移多少位是看你用什么进制表示的, 如果用2进制表示, 则向左偏移16位, 如果是16进制表示的, 则向左偏移1位, 同样, 乘以多少, 也是看你的进制, 平时用段地址×16, 这里面的16很显然是用的10进制, 如果用16进制, 应该是×10H
- [younggay] 嗯,说的挺对。 01/19 17:56
- [younggay] 高手!!(我在论坛里也是这么说的,嘿嘿) 01/19 17:54
- [mess] 不错,整理的很清晰,踩踩 ^_^ 12/30 18:52