CPU中的主要寄存器有哪些
劉路路
發(fā)布于2022-11-09 14:37
37
2
標(biāo)簽:寄存器
1. 累加器(ACCUx)
32位累加器是用于處理字節(jié)、字或雙字的寄存器,是執(zhí)行語(yǔ)句表指令的關(guān)鍵部件。S7-300有兩個(gè)累加器(ACCU1 和ACCU2),S7-400有4個(gè)累加器(ACCU1~ACCU4)。幾乎所有語(yǔ)句表的操作都是在累加器中進(jìn)行的。因此需要用裝入指令把操作數(shù)送入累加器,在累加器中進(jìn)行運(yùn)算和數(shù)據(jù)處理后,用傳送指令將ACCU1中的運(yùn)算結(jié)果傳送到某個(gè)存儲(chǔ)單元。處理8位或16位數(shù)據(jù)時(shí),數(shù)據(jù)存放在累加器的低8位或低16位(稱(chēng)為右對(duì)齊)。
2.地址寄存器
兩個(gè)32位的地址寄存器ARI和AR2作為地址指針,用于寄存器間接尋址。
3. 數(shù)據(jù)塊寄存器
32位數(shù)據(jù)塊寄存器 DB 和 DI的高16 位分別用來(lái)保存打開(kāi)的共享數(shù)據(jù)塊和背景數(shù)據(jù)塊的編號(hào),低16位用來(lái)保存打開(kāi)的數(shù)據(jù)塊的字節(jié)長(zhǎng)度。
4.狀態(tài)字
狀態(tài)字是一個(gè)16位的寄存器,只使用了其中的9位(見(jiàn)圖3-26),狀態(tài)字用于儲(chǔ)存CPU執(zhí)行指令后的狀態(tài)或結(jié)果,以及出現(xiàn)的錯(cuò)誤。

用戶(hù)程序一般并不直接使用狀態(tài)位,但是狀態(tài)字中的某些位用于決定某些指令是否執(zhí)行和以什么樣的方式執(zhí)行。例如后面將要介紹的語(yǔ)句表中的跳轉(zhuǎn)指令和梯形圖中的狀態(tài)位觸點(diǎn)指令與狀態(tài)位有關(guān)。用位邏輯指令和字邏輯指令可以訪(fǎng)問(wèn)和檢測(cè)狀態(tài)位。
(1)首次檢測(cè)位
狀態(tài)字的第0位為首次檢測(cè)位(FC),該位的狀態(tài)為0表示一個(gè)梯形邏輯程序段的開(kāi)始,或指令為邏輯串(即電路塊)的第一條指令。在邏輯串指令執(zhí)行過(guò)程中該位為1,輸出指令或與RLO有關(guān)的跳轉(zhuǎn)指令將該位清零,表示一個(gè)邏輯串的結(jié)束(見(jiàn)圖3-28)。在STEP 7的幫助文件中,用“/FC”表示FC的0狀態(tài)有效(見(jiàn)圖3-32)。
(2)邏輯運(yùn)算結(jié)果
狀態(tài)字的第1位RLO為邏輯運(yùn)算結(jié)果(Result of Logic Operation)。該位用來(lái)存儲(chǔ)執(zhí)行位邏輯指令或比較指令的結(jié)果。RLO的狀態(tài)為1時(shí),表示有能流流到梯形圖中的運(yùn)算點(diǎn)處;為0則表示沒(méi)有能流流到該點(diǎn)。
(3)狀態(tài)位
狀態(tài)字的第2位為狀態(tài)位(STA),執(zhí)行位邏輯指令時(shí),STA與指令中的位變量的值一
致。可以通過(guò)狀態(tài)位了解位邏輯指令的位狀態(tài)。
(4)或位
狀態(tài)字的第3位為或位(OR),在先邏輯“與”后邏輯“或”(即串聯(lián)電路的并聯(lián))的邏輯運(yùn)算中,OR位暫存邏輯“與”(串聯(lián))的運(yùn)算結(jié)果,以便進(jìn)行后面的邏輯“或”運(yùn)算(并聯(lián))。輸出指令將OR位復(fù)位,編程時(shí)并不直接使用OR位。
圖3-27中的梯形圖(見(jiàn)隨書(shū)光盤(pán)中的項(xiàng)目“位邏輯指令”)對(duì)應(yīng)的邏輯代數(shù)表達(dá)式為I0.4*10.7 10.6*10.5=Q4.2,其中的“*”號(hào)表示邏輯與,“ ”號(hào)表示邏輯或,I0.5 上面的水平線(xiàn)表示“非”運(yùn)算,等號(hào)表示將邏輯運(yùn)算結(jié)果賦值給Q4.2。圖3-27和圖3-28 中各變量的狀態(tài)完全相同。圖3-28的左邊是圖3-27中的梯形圖對(duì)應(yīng)的語(yǔ)句表指令。指令中的A和AN分別表示串聯(lián)的常開(kāi)觸點(diǎn)和常閉觸點(diǎn),O表示兩條串聯(lián)電路的并聯(lián),等號(hào)表示賦值。圖3-28右邊的方框中是程序運(yùn)行時(shí)的程序狀態(tài)監(jiān)控結(jié)果,其中的STATUS WORD是狀態(tài)字。

可以看出,在執(zhí)行完第2條指令和最后一條指令之后,狀態(tài)字的最低位(首次檢測(cè)位FC)為0,執(zhí)行其他指令后,F(xiàn)C位為1。即在執(zhí)行完上面的串聯(lián)電路的“與”運(yùn)算和開(kāi)始執(zhí)行下一個(gè)梯形邏輯程序段時(shí),F(xiàn)C位為0。
從梯形圖可以看出,狀態(tài)位STA反映了各條指令中BOOL變量的值,例如第5條指令的STA為0表示10.5為0狀態(tài),梯形圖中I0.5的常閉觸點(diǎn)閉合。做仿真實(shí)驗(yàn)時(shí)用IBO的視圖對(duì)象改變某個(gè)輸入點(diǎn)的狀態(tài),可以看到對(duì)應(yīng)的 STA 位和 RLO 位的狀態(tài)隨之而變。
從圖3-28的RLO列可以看到各條指令執(zhí)行后的邏輯運(yùn)算結(jié)果,例如因?yàn)镮0.7的常開(kāi)觸點(diǎn)斷開(kāi),第二條指令執(zhí)行完后,RLO為0,表示“與”運(yùn)算的結(jié)果為0。還可以看到梯形圖中B點(diǎn)的RLO被保存到OR位。
(5)溢出位
狀態(tài)字的第5位0V為溢出(Over)位,如果算術(shù)運(yùn)算或邏輯運(yùn)算指令執(zhí)行時(shí)出錯(cuò)(例如溢出、非法操作和不規(guī)范的格式),溢出位被置1。如果后面影響該位的指令的執(zhí)行沒(méi)有出錯(cuò),該位被清零。