小白學單片機:詳解AT89S51算數運算類指令(24條)

算數運算指令結果要影響PSW中標誌位。PSW寄存器中各標誌位意義如下:

小白學單片機:詳解AT89S51算數運算類指令(24條)

相關指令對標誌位影響如下:

小白學單片機:詳解AT89S51算數運算類指令(24條)

算數運算影響標誌位示例

小白學單片機:詳解AT89S51算數運算類指令(24條)

一、加法指令

1.不帶進位加法

小白學單片機:詳解AT89S51算數運算類指令(24條)

【例】若有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.帶進位加法(這組指令方便了多字節加法的實現)

小白學單片機:詳解AT89S51算數運算類指令(24條)

3.加1指令

小白學單片機:詳解AT89S51算數運算類指令(24條)

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表示結果的百位值 。

小白學單片機:詳解AT89S51算數運算類指令(24條)

二、減法指令

1.帶借位減法

小白學單片機:詳解AT89S51算數運算類指令(24條)

CY為1,表示D7位需借位; AC為1,表示D3位需借位

OV為1,表示“D6有借位D7無借位”或“D7有借位D6無借位”

用此組指令完成不帶借位的減法,只需先清CY為0即可

小白學單片機:詳解AT89S51算數運算類指令(24條)

2.減1指令

小白學單片機:詳解AT89S51算數運算類指令(24條)

這組指令僅 DEC A 影響P標誌。其餘指令都不影響標誌位的狀態。

三、乘法(僅有一條乘法指令)

小白學單片機:詳解AT89S51算數運算類指令(24條)

四、除法(僅有一條乘法指令)

小白學單片機:詳解AT89S51算數運算類指令(24條)


分享到:


相關文章: