x86的实时架构模式

发布时间:2020-07-13    文章发布:本站【返回】

    X86是基于Intel 8086的向后兼容CPU指令集体系结构家族。 最初的8086处理器是1978年由Intel推出的,它是一个16位微处理器。

Intel将处理器命名为80x86等数字格式,英特尔8086、80186、80286、80386和80486以“ 86”结尾,所以称为“ x86。

x86 32位体系结构在“ Intel体系结构32位”之后通常称为IA-32。 它的64位体系结构由AMD率先开发,被称为“ AMD64”。 后来被英特尔采用,称其为“英特尔64”。 也通常称为“ x86-64”或“ x64”

    英特尔8086和8088具有14个16位寄存器。它们中的四个(AX,BX,CX,DX)是通用的(尽管每个寄存器都有其他用途;例如:只有CX可用作循环指令的计数器。每个寄存器可以作为两个独立的字节进行访问(因此BX高位被视为BH,低位被视为BL)除了这些寄存器外,还有四个分区寄存器(CS,DS,SS,ES),它们用于生成存储器的绝对地址。还有两个指针寄存器(SP指向堆栈的底部,并且BP可用于指向堆栈或内存的其他部分),两个指针寄存器(SI和DI)可用于指向数组内部。 ,有标志寄存器(包含状态标志,如进位,溢出,零等),IP用于指向正在运行的指令的地址。

在实模式下,对内存的访问是分段的。要获取存储器地址的最后20位,请将段地址左移四位并添加偏移地址。因此,实模式下的总可寻址空间为2字节,即1MB,这在1979年是一个令人印象深刻的符号。在实模式下,有两种寻址模式:NEAR和FAR。在FAR模式下,需要指定范围和偏移量。在NEAR模式下,仅指定偏移模式,并且通过适当的范围寄存器获取存储范围。 DS寄存器用于数据,CS寄存器用于代码,SS寄存器用于堆栈。例如,如果DS为A000h,SI为5677h,则DS:SI将指向仪表的绝对地址DS×16 + SI = A5677h

    在此体系结构下,两个不同的扩展区/偏移对可以指向同一绝对地址。因此,如果DS为A111h,SI为4567h,则DS:SI将指向与上一段相同的A5677h。除了重复性之外,此体系结构一次不能具有四个以上的扩展。此外,CS,DS和SS是程序正常运行所必需的,因此仅ES可以用于指向其他位置。此模式最初旨在与Intel 8085兼容,从而引起程序员无尽的痛苦。

    除上述内容外,8086还具有8位64K(也称为16位32K)输入-输出(EN:I / O)空间,以及硬件支持的64K(一个段)存储堆栈。只能将字(2个字节)压入堆栈。堆栈从内存顶部向下扩展,其底部由SS:SP指向。有256个中断,可以是硬件或软件。使用堆栈存储返回中断的程序的地址,可以将中断串在一起。