CPU的物理地址不变,而逻辑地址分配是随机的,每次载入系统时都不一样,可以在DOS里查看。对于有16根数据线,20根地址线的8086CPU,将逻辑地址用段基地址和偏移地址表示。段寄存器中的段基地址可以定义任何64KB存储器的起始地址,偏移量用来在64KB存储器中任选一单元,每一个段的长度为64KB,地址范围为(起始地址~起始地址+FFFFH),起始地址为段基地址×10H。
在 8086 CPU 中,有十四个十六位的寄存器。
8086 可外接 1MB 的存储器。
由于 8086 对存储器采用了分段管理的方式,所以:
在任何时刻,8086 最多,只能访问 4 * 64KB 的地址范围。
复位时,CS 是 FFFFH,其余寄存器的值,都是 0000。
所以,在复位后:
分配给代码段的范围是:FFFF0H~0FFEFH。
分配给数据段、堆栈段和附加段的范围,都是:00000H~0FFFFH。
复位后,8086 将从 FFFF0H 取出代码并执行。
以后,各寄存器,内存分配的地址范围,即由你的程序决定。
cpu访问内存单元时都要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们把这个唯一的地址称为物理地址。
8086cpu是16位结构的,但它有20位地址总线,那么如果利用16结构来结合20位地址总线?
cpu中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址
段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
地址加法器将两个16位地址合成为一个20位的物理地址
cpu再通过合成后的20位物理地址去访问内存
物理地址=段地址×16+偏移地址
it内部供应团队为您服务,希望您满意
。。。