最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

什么是寄存器?寄存器的分類與作用?

2022-09-15 11:27 作者:-遮瑕-  | 我要投稿

什么是寄存器?

????學(xué)習(xí)過數(shù)電的同學(xué)應(yīng)該都知道,數(shù)字電路常分為兩類,也就是組合邏輯電路和時序邏輯電路,對于組合邏輯電路來說,它的輸出只和現(xiàn)在的輸入有關(guān),也就是說,如果我用一個數(shù)據(jù)選擇器,我就只能每次使用的時候都給它輸入我需要的地址。

????但是在CPU里面,程序需要存放、數(shù)據(jù)需要存放、計算出來的結(jié)果也需要存放,那么使用組合邏輯電路就無法實現(xiàn)了,所以就需要使用時序邏輯電路來制作出一種可以暫時存放我所需要的狀態(tài)的電路,我們稱這種電路為“寄存器”。

CPU結(jié)構(gòu)簡單示意

????放到CPU之內(nèi),我們考慮到各個寄存器的工作條件不同、需要存儲的內(nèi)容也不同,所以我們將其分為了各種類型的寄存器,存儲程序狀態(tài)的、存儲指令位置的,這種寄存器我們就將它組合到一起,稱之為“控制器”,對于進(jìn)行運算的寄存器,也就是累加器、算術(shù)邏輯單元,我們又放一起,稱之為“運算器”。

寄存器的組成?

????前文已經(jīng)說過了,寄存器由時序邏輯電路組成,通常由鎖存器或者D觸發(fā)器構(gòu)成,根據(jù)構(gòu)成寄存器使用的觸發(fā)器數(shù)量不同,就形成了不同位數(shù)的寄存器。

寄存器的分類?

????我在這里以8086CPU的結(jié)構(gòu)為例。


8086CPU寄存器簡單分類


????我們常常把寄存器分為幾個大類,比如寄存器寄存器,首要功能當(dāng)然是可以寄存我的數(shù)據(jù),那么這類寄存器我們就稱之為通用寄存器,主要功能就是用作儲存,至于其余功能會在后面詳細(xì)講解;

????其次,對于計算機(jī)來說,它內(nèi)部所有東西都是0101,不管是指令還是數(shù)據(jù)都是放一起的,所以為例區(qū)分是數(shù)據(jù)還是指令,我們便使用了寄存器來儲存地址,指令寄存器內(nèi)的地址所在的0101自然就是指令,數(shù)據(jù)寄存器內(nèi)的地址所在的0101自然就是數(shù)據(jù);

????同時,如果我想要尋址10位的地址,那我是不是就需要我自己有10位?但是8086有16位,而它的地址總線卻有20位,所以設(shè)計師們就想出了一個絕妙的方法,用兩個16位組成一個20位,所以段寄存器就應(yīng)運而生了,就好比我手上有兩個數(shù)碼管,單獨拿一個只能顯示0到9這十個數(shù),但是如果我使用兩個,一個作為十位,也就是所謂的“段”,一個作為個位,那么我就可以表示0到99這一百個數(shù),而這就是段寄存器的作用;

????要理解棧寄存器就得先理解棧,??梢岳斫鉃橐粋€箱子,我只能從上面一個一個的放東西,拿出來也只能從最上面的拿,也就是先進(jìn)后出、后進(jìn)先出,棧的使用是十分廣泛的,廣泛到什么程度呢,廣泛到8086CPU單獨設(shè)計了棧寄存器來儲存棧所在的位置,對于匯編來說,使用軟件實現(xiàn)棧是特別繁瑣且低效的,所以便直接使用一個寄存器指出棧的位置不就好了嗎,直接說這個位置就是棧,入棧出棧的指令都到這里來執(zhí)行;

????最后就是標(biāo)志寄存器FR了,

????比如說當(dāng)加法產(chǎn)生進(jìn)位時,對于我們電路來說,出來的結(jié)果是結(jié)果溢出的結(jié)果,比如1加1等于0,那我們怎么判斷這個0和真正的0的區(qū)別呢?顯然,我們需要一個東西來標(biāo)記這個溢出的現(xiàn)象,只要有溢出,那么處理器就可以知道這個數(shù)應(yīng)該是2(也就是10)而不是0。

寄存器的功能?

????下面呢,我將以8051單片機(jī)結(jié)合8086CPU從寫程序的角度來一步步介紹各個寄存器的作用。

????眾所周知,在匯編里,我們寫入的是指令,儲存的是數(shù)據(jù),但是前面有說過,數(shù)據(jù)和指令在單片機(jī)內(nèi)都是01010101的高低電平,我們需要通過某種手段來確保我們單片機(jī)上電時第一次執(zhí)行的是指令而不是數(shù)據(jù),那么在51單片機(jī)內(nèi)就使用了一個寄存器PC來指向程序,只要當(dāng)復(fù)位時這個寄存器每次都指向0000,那么我們就可以確保0000處的指令一定會被第一個執(zhí)行,從而對單片機(jī)實現(xiàn)編程控制。

????既然我們通過PC找到了指令的位置,那么我們應(yīng)該在哪去找數(shù)據(jù)的位置呢,為了可以有效的儲存數(shù)據(jù),51使用了通用寄存器來存放數(shù)據(jù),當(dāng)然,只有寄存器顯然不太夠用,所以也可以通過寄存器將數(shù)據(jù)存放到ROM內(nèi),這里我們以特殊的儲存方式——棧進(jìn)行舉例。

????首先介紹為什么我們需要棧,比如我們想進(jìn)行數(shù)據(jù)交換的時候,由于棧先入后出的特性,我們可以簡單的實現(xiàn)數(shù)據(jù)的交換,但是想要通過匯編編程來實現(xiàn)棧是很耗資源的,為了可以簡單的實現(xiàn)棧,51采用了寄存器來儲存棧的位置,即可以人為的認(rèn)為一片空間為棧,使用寄存器來儲存棧頂部所在的位置。


什么是寄存器?寄存器的分類與作用?的評論 (共 條)

分享到微博請遵守國家法律
灵石县| 和林格尔县| 马鞍山市| 集贤县| 东兴市| 城步| 伊宁市| 盱眙县| 余庆县| 兴隆县| 舟曲县| 古浪县| 东城区| 壤塘县| 凤阳县| 奉节县| 梓潼县| 璧山县| 大方县| 吴旗县| 娱乐| 洛阳市| 上饶市| 凤台县| 龙岩市| 芜湖县| 通化市| 宝兴县| 北碚区| 大冶市| 太仓市| 尼勒克县| 泾阳县| 兴宁市| 德阳市| 洛宁县| 呼伦贝尔市| 汉中市| 安多县| 鲁山县| 金门县|