8051小筆記---什麼是PSW

PSW的英文全名叫做(Program Status Word)

中文翻成"程式狀態字組"

他是一個2Bytes(8bits)大小的資料

在記憶體位置D0到D7

從英文全名我們可以推斷它紀錄著程式狀態

接下來我們詳細的講述PSW

PSW內的各項旗標(Flags)

總共有七種不同的功能

(Register bank select功能的旗標有兩個)

分別如以下:

  1. Carry flag

  2. AC

  3. F0

  4. Register bank select

  5. Overflow flag

  6. Reserved bit

  7. Parity bit

各項旗標的功能介紹

  1. Carry flag

    他的符號為 : CY

    記憶體位址在 : D7H

     

    顧名思義就是記錄著程式的進位(Carry)

    當今天我們的程式8bits裝著#FDH的資料

    如果我們對這個資料加上#05H

    這時資料會變為#02H

    Carry flag被設為1

     

    以此類推,減法也有這個機制

    如果我們對#02H這個資料減#05H

    資料會變為#FDH

    Carry flag被設為1

  2. AC

    他的符號為 : AC

    記憶體位址在 : D6H


    他的英文全名為Auxiliary Carry flag

    顧名思義,其功能也跟進位有關

    而具體來說,他在BCD(Binary-coded Decimal)的進位非常有幫助

    因為他檢測的進位並不是最高位元(左邊第一個)

    而是兩個Byte的中間(三和四bit)

    就如以下這樣 : 

    #9BH + #0CH

    1001,1011 + 0000,1100 = 1010,0111

    經過上面的加法操作

    唯一的進位發生在三和四bit間

    所以AC被設為1、CY保持0

  3. F0

    他的符號為 :F0

    記憶體位址在 : D5H


    他的英文全名為Flag 0

    沒什麼特別的功能

    可以供程式設計師自行運用

  4. Register bank select

    他的符號為 :RS1、RS0

    記憶體位址在 : D4H、D3H 

     

    這兩個bits的作用是選擇Register bank

    並且可以知道總共有四種數值的組合

    分別對應到四個不同的Register bank

    (關於Register bank我之後會再寫一篇文章)

     

    不同Register bank的最大好處是可以減少記憶體stack堆疊的次數

    像是 : interrupt就會很頻繁的stack堆疊,直接轉換Register bank是一個簡潔的好辦法

  5. Overflow flag

    他的符號為 : OV

    記憶體位址在 : D2H


    他的功能也是可以從名字上看出來

    當今天運算操作導致"有號數"數值太大

    也就是進位影響到符號位(sign bit)

    他就會被設為1

    基本上他的概念等同於Carry flag

    最大的差別就是適用有號數還是無號數

  6. Reserved bit

    他的符號為 : (沒有)

    記憶體位址在 : D1H


    他就是一個什麼功能都沒有的空白區域

  7. Parity bit

    他的符號為 : P

    記憶體位址在 : D0H


    他的功用如同名字

    會在每一個時脈檢查Acc值的奇偶性

    Acc為奇數時,P = 1

    反之,Acc為偶數時,P = 0

    他最大功用是對接收與輸出信號做奇偶檢查

留言

熱門文章

IC設計產業結構,一看就懂超簡單

8051小筆記---基本的八種定址模式

3nm和5nm?台積電的新聞,一看就懂超簡單