用來(lái)保存當(dāng)前CPU所訪問(wèn)的內(nèi)存單元的地址。由于在內(nèi)存和CPU之間存在著操作速度上的差別,所以必須使用地址寄存器來(lái)保持地址信息,直到內(nèi)存的讀/寫(xiě)操作完成為止 。
地址寄存器(Address Register,AR)用來(lái)保存當(dāng)前CPU所訪問(wèn)的內(nèi)存單元的地址。由于在內(nèi)存和CPU之間存在著操作速度上的差別,所以必須使用地址寄存器來(lái)保持地址信息,直到內(nèi)存的讀/寫(xiě)操作完成為止。 [1] 數(shù)據(jù)寄存器DR用來(lái)暫存微處理器與存儲(chǔ)器或輸人/輸出接口電路之間待傳送的數(shù)據(jù)。地址寄存器AR和數(shù)據(jù)寄存器DR在微處理器的內(nèi)部總線和外部總線之間,還起著隔離和緩沖的作用。
地址寄存器采用單純的寄存器結(jié)構(gòu)。在對(duì)主存或I/O端口進(jìn)行訪問(wèn)時(shí),地址寄存器存放當(dāng)前訪問(wèn)的地址,數(shù)據(jù)緩沖器實(shí)現(xiàn)數(shù)據(jù)的緩沖。CPU通過(guò)修改地址寄存器中的值,就可訪問(wèn)不同的存儲(chǔ)器單元及不同的I/O端口。地址寄存器可用LPM庫(kù)中的元件lpm_latch鎖存器來(lái)完成。圖是地址寄存器的結(jié)構(gòu)圖。地址寄存器的數(shù)據(jù)寬度應(yīng)當(dāng)與程序計(jì)數(shù)器的數(shù)據(jù)寬度一致。data[7…0]是地址寄存器的數(shù)據(jù)輸入端,q[7…0]是地址寄存器的數(shù)據(jù)輸出端,gate是地址鎖存器的控制端。gate的作用是當(dāng)鎖存控制脈沖到來(lái)時(shí),高電平時(shí)數(shù)據(jù)進(jìn)入鎖存器,低電平時(shí)鎖存數(shù)據(jù),保持輸出數(shù)據(jù)穩(wěn)定不變。
當(dāng)CPU和內(nèi)存進(jìn)行信息交換,即CPU向內(nèi)存存/取數(shù)據(jù)時(shí),或者CPU從內(nèi)存中讀出指令時(shí),都要使用地址寄存器和數(shù)據(jù)緩沖寄存器。同樣,如果我們把外圍設(shè)備的設(shè)備地址作為像內(nèi)存的地址單元那樣來(lái)看待,那么,當(dāng)CPU和外圍設(shè)備交換信息時(shí),我們同樣使用 地址寄存器和數(shù)據(jù)緩沖寄存器。地址寄存器的結(jié)構(gòu)和數(shù)據(jù)緩沖寄存器、指令寄存器一樣,通常使用單純的寄存器結(jié)構(gòu)。信息的存入一般采用電位-脈沖方式,即電位輸入端對(duì)應(yīng)數(shù)據(jù)信息位,脈沖輸入端對(duì)應(yīng)控制信號(hào),在控制信號(hào)作用下,瞬時(shí)地將信息打入寄存器。
8086有8個(gè)16比特的寄存器,包括棧寄存器SP與BP,但不包括指令寄存器IP、控制寄存器FLAGS以及四個(gè)段寄存器。AX, BX, CX, DX,這四個(gè)寄存器可以按照字節(jié)訪問(wèn);但BP, SI, DI, SP,這四個(gè)地址寄存器只能按照16位寬訪問(wèn)。
8086以8080和8085(它與8080有匯編語(yǔ)言上的源代碼兼容性)的設(shè)計(jì)為基礎(chǔ),擁有類似的暫存器集合,但是擴(kuò)充為16位。總線接口單元(Bus Interface Unit)通過(guò)6字節(jié)預(yù)存(prefetch)的貯列(queue)將指令送給運(yùn)行單元(Execution Unit),所以取指令和運(yùn)行是同步的-一種流水線的原始形式(8086指令長(zhǎng)度變化從1到6字節(jié))。
8086有四個(gè)完全一樣的16位暫存器,但也能夠當(dāng)作八個(gè)8位暫存器來(lái)訪問(wèn);以及四個(gè)16位變址寄存器(包含堆棧索引)。數(shù)據(jù)暫存器通常由指令隱含地使用,針對(duì)暫存值需要復(fù)雜的暫存器配置。它提供64K 8位的輸出輸入(或32K 16位)端口,以及固定的矢量中斷。大部分的指令只能夠訪問(wèn)一個(gè)存儲(chǔ)器地址,所以其中一個(gè)運(yùn)算符必須是一個(gè)暫存器。運(yùn)算結(jié)果會(huì)存儲(chǔ)在運(yùn)算符中的一個(gè)。
64-bit地址寄存器可存儲(chǔ)2個(gè)地址,存儲(chǔ)器的基本單位是Byte,換言之最大支持16EiB存儲(chǔ)器,1EiB則相等于1024GiB。但是,現(xiàn)在的64-bit CPU并沒(méi)有64位地址總線。