8051小筆記---什麼是PSW
PSW的英文全名叫做(Program Status Word) 中文翻成"程式狀態字組" 他是一個2Bytes(8bits)大小的資料 在記憶體位置D0到D7 從英文全名我們可以推斷它紀錄著程式狀態 接下來我們詳細的講述PSW PSW內的各項旗標(Flags) 總共有七種不同的功能 (Register bank select功能的旗標有兩個) 分別如以下: Carry flag AC F0 Register bank select Overflow flag Reserved bit Parity bit 各項旗標的功能介紹 Carry flag 他的符號為 : CY 記憶體位址在 : D7H 顧名思義就是記錄著程式的進位(Carry) 當今天我們的程式8bits裝著#FDH的資料 如果我們對這個資料加上#05H 這時資料會變為#02H Carry flag被設為1 以此類推,減法也有這個機制 如果我們對#02H這個資料減#05H 資料會變為#FDH Carry flag被設為1 AC 他的符號為 : AC 記憶體位址在 : D6H 他的英文全名為Auxiliary Carry flag 顧名思義,其功能也跟進位有關 而具體來說,他在BCD( Binary-coded Decimal)的進位非常有幫助 因為他檢測的進位並不是最高位元(左邊第一個) 而是兩個Byte的中間(三和四bit) 就如以下這樣 : #9BH + #0CH 100 1,1 011 + 000 0,1 100 = 101 0,0 111 經過上面的加法操作 唯一的進位發生在三和四bit間 所以AC被設為1、CY保持0 F0 他的符號為 :F0 記憶體位址在 : D5H 他的英文全名為Flag 0 沒什麼特別的功能 可以供程式設計師自行運用 Register bank select 他的符號為 :RS1、RS0 記憶體位址在 : D4H、D3H 這兩個bits的作用是選擇Register bank 並且可以知道總共有四種數值的組合 分別對應到四個不同的Register bank (關於Register bank我之後會再寫一篇文章) 不同Register bank的最大好處是可以減少記憶體stack堆疊的次數 像是 : ...