西門子狀態字用於表示CPU執行指令時所具有的狀態。一些指令是否執行或以何方式執行可能取決於狀態字中的某些位;執行指令時也可能改變狀態字中的某些位,也能在位邏輯指令或字邏輯指令中訪問並檢測他們。
基本介紹
- 中文名:西門子狀態字
- 作用:用於表示CPU執行指令時的狀態
- 用途:電腦CPU
- 本質:檢測內部運行狀態
簡介,結構,
簡介
狀態字用於表示CPU執行指令時所具有的狀態。一些指令是否執行或以何方式執行可能取決於狀態字中的某些位;執行指令時也可能改變狀態字中的某些位,也能在位邏輯指令或字邏輯指令中訪問並檢測他們。
結構
狀態字的結構如下:
15……………9 8 7 6 5 4 3 2 1 0
BR | CC1 | CC0 | OV | OS | OR | STA | RLO | /fc |
(1) 首位檢測位(/FC)
狀態字的位0稱為首位檢測位。若/FC位的狀態為0,則表明一個梯形邏輯網路的開始,或指令為邏輯串的第一條指令。CPU對邏輯串第一條指令的檢測(稱為首位檢測)產生的結果直接保存在狀態字的RLO位中,經過首次檢測存放在RLO中的0或1被稱為首位檢測結果。/FC位在邏輯串的開始時總是0,在邏輯串指令執行過程中/FC位為1,輸出指令或與邏輯運算有關的轉移指令(表示一個邏輯串結束的指令)將/FC清0。
(2) 邏輯操作結果(RLO)
狀態字的位1稱為邏輯操作結果RLO(Result of Logic Operation)。該位存儲邏輯指令或算術比較指令的結果。在邏輯串中,RLO位的狀態能夠表示有關信號流的信息。RLO的狀態為1,表示有信號流(通);為0,表示無信號流(斷)。可用RLO觸發跳轉指令。
(3) 狀態位(STA)
狀態字的位2稱為狀態位。狀態位不能用指令檢測,它只是在程式測試中被CPU解釋並使用。如果一條指令是對存儲區操作的位邏輯指令,則無論是對該位的讀或寫操作,STA總是與該位的值取得一致;對不訪問存儲區的位邏輯指令來說,STA位沒有意義,此時它總被置為1。
(4) 或位(OR)
狀態字的位3稱為或位(OR)。在先邏輯“與”後邏輯“或”的邏輯串中,OR位暫存邏輯“與”的操作結果,以便進行後面的邏輯“或”運算。其它指令將OR位清0。
(5) 溢出狀態保持位(OS)
狀態字的位5稱為溢出狀態保持位(或稱為存儲溢出位)。OV被置1時OS也被置1;OV被清0時OS仍保持。所以它保存了OV位,可用於指明在先前的一些指令執行中是否產生過錯誤。只有下面的指令才能復位OS位:JOS(OS=1時跳轉);塊調用指令和塊結束指令。
(6) 溢出位(OV)
(7) 條件碼1(CC1)和條件碼0(CC0)
狀態字的位7和位6稱為條件碼1和條件碼0。這兩位結合起來用於表示在累加器1中產生的算術運算或邏輯運算結果與0的大小關係;比較指令的執行結果或移位指令的移出位狀態。詳見表4.4.2.1和表4.4.2.2。
4.4.2.1算術運算後的CC1和CC0
CCl | CCO | 算術運算 無溢出 | 整數算術運算 有溢出 | 浮點數算術運算 有溢出 |
0 | 0 | 結果=0 | 整數加時產生負範圍溢出 | 平緩下溢 |
0 | 1 | 結果<0 | 乘時負範圍溢出;加、減、取負時正溢出 | 負範圍溢出 |
1 | 0 | 結果>0 | 乘、除時正溢出;加、減時負溢出 | 正範圍溢出 |
1 | 1 | - | 在除時除數為0 | 非法操作 |
4.4.2.2 比較、移位和循環移位、字邏輯指令後的CC1和CC0
CCl | CCO | 比較指令 | 移位和循環指令 | 字邏輯指令 |
0 | 0 | 累加器2=累加器1 | 移位=0 | 結果=0 |
0 | 1 | 累加器2<累加器1 | - | - |
1 | 0 | 累加器2>累加器1 | 移出位=1 | 結果≠0 |
1 | 1 | 不規範 (只用於浮點數比較) | - | - |
(8) 二進制結果位(BR)
狀態字的位8稱為二進制結果位。它將字處理程式與位處理聯繫起來,在一段既有位操作又有字操作的程式中,用於表示字操作結果是否正確(異常)。將BR位加入程式後,無論字操作結果如何,都不會造成二進制邏輯鏈中斷。在LAD的方塊指令中,BR位與ENO有對應關係,用於表明方塊指令是否被正確執行:如果執行出現了錯誤,BR位為0,ENO也為0;如果功能被正確執行,BR位為1,ENO也為1。
在用戶編寫的FB和FC程式中,必須對BR位進行管理,當功能塊正確運行後使BR位為1,否則使其為0。使用STL指令SAVE或LAD指令——(SAVE),可將RLO存入BR中,從而達到管理BR位的目的。當FB或FC執行無錯誤時,使RLO為1並存入BR,否則,在BR中存入0。