课程主体: 1、8086的存储器组织 前面已经提到,8086有20根地址线,可以寻址1M 字节的存储器空间。然而8086的内部寄存器都是16位的,为了能够利用16位寄存器访问1M字节的内存空间,8086系统引入了存储器分段的概念。 以CPU的16位寄存器为基础,每个段的最大长度可以是64K字节。通常,一个程序可以拥有自己的代码段、数据段、堆栈段和扩展段,它们的段的基地址分别存放在CS、DS、SS和ES这4个寄存器中。要计算一个存储单元的物理地址,先要将它的段寄存器的16位地址值左移4位得到20位的基地址,再将这20位地址值加上16位的偏移量,便得到了存储器的物理地址。偏移量可以存放在指令指针寄存器IP、堆栈指针SP、基址指针BP或者变址寄存器SI、DI当中。 虽然段的大小都可以为64K,但在实际应用当中,由于程序较短,这些段之间可以互相覆盖。 |