Ⅰ mcs 51單片機 二進制減法 微機原理
51單片機里,8位二進制數的減法如下:
MOV A, #被減數
CLR C
SUBB A, #減數 ;轉換成加法的過程,由CPU自行完成
…… ;到這里就減完了,C=1時,即有借位
Ⅱ 關於單片機帶借位減法指令
51單片機中帶借位減法指令為:SUBB,使用該指令時一定要首先處理借位Cy,不然容易出錯,得出與理想不一樣的結果。比如:
MOV A,R2
SUBB A,R3
以上指令運行後,將的出不確定的結果,正確的處理方法為:
CLR C
MOV A,R2
SUBB A,R3
Ⅲ 單片機的帶借位減法
單片機中用到帶借位的減法是為了進行多位元組的減法運算,在進行高位位元組運算時,要同時減去低位位元組的借位,以得到正確的結果。
如果cy=1,SUBB
#09H,#05H
結果是03H
不是很正確噢
首先你的指令是非法指令,計算機、單片機中的立即數是不能做目的操作數的,目的操作數是要保存結果的,而立即數是不能保存結果的。
要想完成你的運算想法,應該寫成如下形式:
MOV
A,#9
SETB
C
SUBB
A,#5
即執行後:
(A)-5-cy=9-5-1=3
結果為03H是正確的。
在進行最低位元組的減法運算時,即剛開始做減法,還沒有產生借位,應在運算前使cy=0
即
CLR
C
MOV
A,#DATA1
SUBB
A,#DATA2
執行時,
(A)-DATA2-cy=DATA1-DATA2-0
呵呵
滿意
就選滿意回答
Ⅳ 單片機實現十進制數減1的編程
51單片機的運算都是十六進制的,唯一的十進制調整指令DA
A,也只能用在ADD/ADDC指令之後,所以要做十進制的減法運算,也必須轉換為加法運算,然後再做十進制調整。十進制減1運算程序CLR
CMOV
A,#50H
ADD
A,#99H
;A=E9HDA
A
;A=49H
Ⅳ 單片機msc-51中編程實現兩個一位元組壓縮型BCD碼的減法
編程實現兩個一位元組壓縮型BCD碼的減法,
設被減數地址在R0中,減數地址在R1中,差仍存於被減數地址單元中。
注意是單片機中啊。
------------------
一位元組壓縮的 BCD 碼相減。
如:22-55 =-33。
注意:-33 的 BCD 補碼是 67H。
MCS-51 匯編語言程序如下:
MOVR2,#22H;被減數
MOVR3,#55H;減數
CLRC
MOVA,R2
SUBB A,R3;先減一次團並明,取得正負號
MOVF0,C;暫時保存
;---------下面正式相減
MOVA,#9AH
SUBB A,R3;求減數的 BCD 補碼=45H
ADDA,R2;加上被減數 22H,得 67H
DA A ;十進塌告制調整,還是 67H
MOVR4,A;保存差
MOVC,F0;用 Cy 當做「蔽搜符號標志位」
--------------
如果運算數據,是:55-22 = 33,
執行本程序,將有:C = 0,R4 = 33。