算數運算指令結果要影響PSW中標誌位。PSW寄存器中各標誌位意義如下:
相關指令對標誌位影響如下:
算數運算影響標誌位示例
一、加法指令
1.不帶進位加法
【例】若有2個無符號數存於累加器A和RAM的30H單元,即(A)=84H,(30H)=8DH,試分析執行指令 ADD A,30H 後的結果。由於對無符號數相加,要考察CY。由上頁圖可知,CY=1,因此知道運算的結果發生了進位,即實際值應該是100H+11H。所以,編程者應確保單字節無符號數運算結果不要超過255 。
【例】若有2個有符號數存於累加器A和RAM的30H單元,即(A)=84H,(30H)=8DH,試分析執行指令 ADD A,30H 後的結果。有符號數相加,只需考察溢出標誌OV即可。由上圖可見OV=1,因此可知運算的結果發生了溢出,這說明累加器A中的結果已經不是正確的值了。 編程者應確保單字節有符號數運算結果不超過-128~127。否則,就要將數據用多字節表示或在程序運行中對狀態標誌進行判斷: 無符號數用JNC或JC,有符號數要用JNB或JB。
2.帶進位加法(這組指令方便了多字節加法的實現)
3.加1指令
4.十進制調整
DA A ;調整A的內容為正確的BCD碼
兩個壓縮的BCD碼按二進制相加後,必須經過調整方能得到正確的和。當A中低4位出現了非BCD碼(1010~1111)或低4位的進位AC=1,則應在低4位加6調整。當A中高4位出現了非BCD碼(1010~1111)或高4位的進位CY=1,則應在高4位加6調整。
執行十進制調整指令後,PSW中的CY表示結果的百位值 。
二、減法指令
1.帶借位減法
CY為1,表示D7位需借位; AC為1,表示D3位需借位
OV為1,表示“D6有借位D7無借位”或“D7有借位D6無借位”
用此組指令完成不帶借位的減法,只需先清CY為0即可
2.減1指令
這組指令僅 DEC A 影響P標誌。其餘指令都不影響標誌位的狀態。
三、乘法(僅有一條乘法指令)
四、除法(僅有一條乘法指令)
閱讀更多 愛上單片機 的文章