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

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

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