结构
地址寄存器采用单纯的寄存器结构。在对主存或I/O端口进行访问时,地址寄存器存放当前访问的地址,数据缓冲器实现数据的缓冲。CPU通过修改地址寄存器中的值,就可访问不同的存储器单元及不同的I/O端口。
地址寄存器可用LPM库中的元件lpm_latch锁存器来完成。图是地址寄存器的结构图。地址寄存器的数据宽度应当与程序计数器的数据宽度一致。data[7…0]是地址寄存器的数据输入端,q[7…0]是地址寄存器的数据输出端,gate是地址锁存器的控制端。gate的作用是当锁存控制脉冲到来时,高电平时数据进入锁存器,低电平时锁存数据,保持输出数据稳定不变。
086地址寄存器
8086有8个16比特的寄存器,包括栈寄存器SP与BP,但不包括指令寄存器IP、控制寄存器FLAGS以及四个段寄存器。AX,BX,CX,DX,这四个寄存器可以按照字节访问;但BP,SI,DI,SP,这四个地址寄存器只能按照16位宽访问。
8086以8080和8085(它与8080有汇编语言上的源代码兼容性)的设计为基础,拥有类似的暂存器集合,但是扩充为16位。总线接口单元(Bus Interface Unit)通过6字节预存(prefetch)的贮列(queue)将指令送给运行单元(Execution Unit),所以取指令和运行是同步的-一种流水线的原始形式(8086指令长度变化从1到6字节)。
8086有四个完全一样的16位暂存器,但也能够当作八个8位暂存器来访问;以及四个16位变址寄存器(包含堆栈索引)。数据暂存器通常由指令隐含地使用,针对暂存值需要复杂的暂存器配置。它提供64K8位的输出输入(或32K16位)端口,以及固定的矢量中断。大部分的指令只能够访问一个存储器地址,所以其中一个运算符必须是一个暂存器。运算结果会存储在运算符中的一个。
64-bit地址寄存器可存储2个地址,存储器的基本单位是Byte,换言之最大支持16EiB存储器,1EiB则相等于1024GiB。但是,现在的64-bitCPU并没有64位地址总线。