版權歸原作者所有,如有侵權,請聯(lián)系我們

[科普中國]-計數(shù)寄存器

科學百科
原創(chuàng)
科學百科為用戶提供權威科普內容,打造知識科普陣地
收藏

計算機中用途廣泛的寄存器稱為通用寄存器,分為數(shù)據(jù)寄存器和指針、變址寄存器兩組。計數(shù)寄存器是8086系統(tǒng)數(shù)據(jù)寄存器中的一組。8086系統(tǒng)中數(shù)據(jù)寄存器CX將數(shù)據(jù)高8位和低8位分為兩組寄存器,計數(shù)寄存器是8位數(shù)據(jù)寄存器,包括CH、CL。

簡介計數(shù)寄存器是將數(shù)據(jù)寄存器CX做兩個獨立的 8 位寄存器使用,即 CH 和 CL 兩個 8 位寄存器。計數(shù)寄存器主要在串操作指令、位移指令和LOOP指令中作計數(shù)器。當在匯編指令中使用循環(huán) LOOP 指令時,可以通過 CX 來指定需要循環(huán)的次數(shù),而 CPU 在每一次執(zhí)行 LOOP 指令的時候,都會做兩件事:一件就是令 CX = CX – 1,即令 CX 計數(shù)器自動減去 1;還有一件就是判斷 CX 中的值,如果 CX 中的值為 0 則會跳出循環(huán),而繼續(xù)執(zhí)行循環(huán)下面的指令,當然如果 CX 中的值不為 0 ,則會繼續(xù)執(zhí)行循環(huán)中所指定的指令 。往往需要多次反復執(zhí)行一種相同的操作,而每次只是參與操作的操作數(shù)不同,此時就需要采用循環(huán)程序。循環(huán)指令主要用于循環(huán)程序中。移位指令逐位向左或向右移動輸入端I N的內容。 向左移n位會將輸入IN的內容乘以2的n次冪;向右移n位則會將輸入IN的內容除以2的n次冪。

串指令80x86提供處理字符串的操作。串指連續(xù)存放在存儲器中的一些數(shù)據(jù)字節(jié)、字或雙字。串操作允許程序對連續(xù)存放大的數(shù)據(jù)塊進行操作。 串操作通常以DS:(E)SI來尋址源串,以ES:(E)DI來尋址目的串,對于源串允許段超越。(E)SI或(E)DI這兩個地址指針在每次串操作 后,都自動進行修改,以指向串中下一個串元素。地址指針修改是增量還是減量由方向標志來規(guī)定。當DF=0,(E)SI及(E)DI的修改為增量;當DF= 1,(E)SI及(E)DI的修改為減量。根據(jù)串元素類型不同,地址指針增減量也不同,在串操作時,字節(jié)類型SI,DI加、減1;字類型SI,DI加、減 2;雙字類型ESI,EDI加、減4。如果需要連續(xù)進行串操作,通常加重復前綴。重復前綴可以和任何串操作指令組合,形成復合指令。

有關術語通用寄存器

通用寄存器是保存計算系統(tǒng)的各種功能單元的 輸入(操作數(shù))和輸出(結果)的存儲設備。通用寄存器可用于傳送和暫存數(shù)據(jù),也可參與算術邏輯運算,并保存運算結果。除此之外,它們還各自具有一些特殊功能。通用寄存器的長度取決于機器字長,匯編語言程序員必須熟悉每個寄存器的一般用途和特殊用途,只有這樣,才能在程序中做到正確、合理地使用它們。16位cpu通用寄存器共有8個:AX,BX,CX,DX,BP,SP,SI,DI。AX、BX、CX、DX 可稱為數(shù)據(jù)寄存器,用來暫時存放計算過程中所用到的操作數(shù)、結果和其他信息。他們都可以以字(16位)的形式訪問,也可以以字節(jié)(8 位)的形式訪問1。

八個寄存器都可以作為普通的數(shù)據(jù)寄存器使用。但有的有特殊的用途:AX為累加器,CX為計數(shù)器,BX,BP為基址寄存器,SI,DI為變址寄存器,BP還可以是基指針,SP為堆棧指針。32位cpu通用寄存器共有8個: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多。在通用寄存器之所以存在的許多硬件理由中, 特別應加注意的一個理由是:通用寄存器在減少指 定計算機程序的操作數(shù)所需的平均位數(shù)方面所起的 作用。例如,用4位就可對16個通用寄存器中的一 個進行編址,而具有一百萬存儲單元的存儲器的主 存地址要求一個20位的地址。

數(shù)據(jù)寄存器

數(shù)據(jù)寄存器,是用來暫時存放計算過程中所用到的操作數(shù)、結果和信息。數(shù)據(jù)寄存器可以分為 AX,BX,CX,DX 四個組成。這4個16位寄存器又可分別分成高8位(AH、BH、CH、DH)和低8位(AL、BL、CL、DL)。因此它們既可作為4個16位數(shù)據(jù)寄存器使用,也可作為8個8位數(shù)據(jù)寄存器使用,在編程時可存放源操作數(shù)、目的操作數(shù)或運算結果。數(shù)據(jù)寄存器是存放操作數(shù)、運算結果和運算的中間結果,以減少訪問存儲器的次數(shù),或者存放從存儲器讀取的數(shù)據(jù)以及寫入存儲器的數(shù)據(jù)的寄存器。

AX(accumulator)累加器。作為累加器使用。是算術運算的主要寄存器。在乘、除等指令中指定用來存放操作數(shù)。以及所有的 I/O指令都使用這一寄存器與外部設備傳送信息。

BX(base)基址。可以作為通用寄存器使用。此外在計算機存儲地址時,它經常用作基址寄存器。

CX(count)計數(shù)??梢宰鳛橥ㄓ眉拇嫫魇褂?。常用來保存計數(shù)值,如在循環(huán)、位移和串處理指令中作隱含計數(shù)器。

DX(data)數(shù)據(jù)。可以作為通用寄存器使用。一般在作雙字長運算時把DX和AX組合在一起存放一個雙字長數(shù),DX用來存放高位數(shù)。對于某些I/O操作,DX可用來存放I/O的端口地址。

本詞條內容貢獻者為:

何星 - 副教授 - 上海交通大學