A. 單片機加法指令只怎麼執行的
A,30H是將30H內存中數加A放到A的存儲單元。84H+8DH,D是13,加4為17,0到15即0到F這16個數,結果為1,進位標志C為有效,然後加進8+8+C=17,還是保留1並進位,所以最後是11H。PSW是單片機內部標志寄存器,是單片機運行必不可少的基本運算基礎,CY是進位標志,是位元組內的,如第一個進位,AC是輔助進位,位元組間的,第二個進位就是。OV是溢出,這里結果大於FFH必定溢出,P那個忘了…我在床上呢不好查,不好意思,希望能幫到一些
B. 51單片機,使用keil軟體,4位元組加法或減法子程序
四個位元組加上四個位元組,和應該是4~5個位元組。
本程序,需要三個地址指針,但是一般只有兩個(R0和R1)可以用;如果換用工作區,就比較麻煩了。下面使用B充當「和」的地址指針,RESULT + 4單元,充當加數2的地址指針。
程序如下:
RESULT equ 30H ;和數的地址
ORG 0000H
;實驗數據如下:
MOV 20H, #22H ;加數1
MOV 21H, #33H
MOV 22H, #44H
MOV 23H, #0F3H
MOV 24H, #12H ;加數2
MOV 25H, #34H
MOV 26H, #56H
MOV 27H, #78H
MOV R0, #20H ;給定地址
MOV R1, #24H
LCALL _4_JIA_4 ;調用加法子程序
NOP
SJMP$
_4_JIA_4:
MOV RESULT + 4, R1 ;保存加數2地址
MOV B, #RESULT ;保存和的地址
CLR C
MOV R2, #4
LOOP:
MOV A, @R0
INC R0
MOV R1, RESULT + 4
ADDC A, @R1 ;加上加數2
INC R1
MOV RESULT + 4, R1
MOV R1, B
MOV @R1, A ;保存和數
INC R1
MOV B, R1
DJNZ R2, LOOP
CLR A
ADDC A, #0
MOV RESULT + 4, A ;保存第五位元組
RET
減法子程序,與上面的加法子程序雷同,只要把ADDC換成SUBB即可改為減法子程序。請樓主自行改寫。
C. 51單片機 三位元組加法程序
首先:R1+R4
和
R2+R5
兩個值都大於單位元組最大值FF導致存儲在單位元組寄存器中溢出,導致高位元組的數據丟失。
其次:樓主在將R1、R2存放到中間寄存器的時候中間寄存器A應該為16位寄存器才不會丟失高位元組的數據。
具體的程序編寫,相信樓主經過提示一定能自行解決,這樣提高也是最大的。
D. 單片機 加法
得到的A=0A6H,原因是在匯編中,如果出現結果為高位為:A~F都要在字母前加0,以免機器誤認為是指令。
E. 51單片機 加法程序 兩數相加 不大於10 例:(5+3=8 ) 要這個程序 謝謝各位高手
ORG 0000H;
LJMP MAIN;
ORG 0030H;
MAIN:
MOV R2,#XXH;
MOV R3,#XXH;
MOV A,R2
ADD A,R3
MOV R2,A;
SJMP $
END
加數和被加數放到R2和R3寄存器中,最終結果放回到R2中
當結果大於255時,(PSW.7)=1
F. 用51單片機做加法計算器的設計
51單片機你要不?
G. 一個簡單51單片機加法程序問題
說錯了唄。——要知道 221bH是一個16位(bit)的(16進制)數,41h只是一個8位(bit)的存儲單元,怎麼可能放得下這么大個數呢?
正確說法應該是:把221bh存放到41h、40h兩個連續的存儲單元中。
H. 單片機無符號十進制加法
;51單片機程序如下
CLR C
LOOP:
MOV A, @R0
ADDC A, @R1
DA A
MOV @R0, A
INC R0
INC R1
DJNZ R7, LOOP
END
I. 單片機的加法運算問題
你的公式我看不懂,程序錯的太多。 只能是隨便幫你改了幾下了。
ORG 0000H
LJMP MAIN
ORG 0100H ;不能用0010h 好像是中斷的向量表的。
MAIN:
MOV 30H,a
MOV 31H,b
RLC A ;ACC.7移入進位位
JNC MAINL ;進位位為0轉移到MAINL
MOV R0,B ;似乎不能用ADDC A,B,因此先將b要先移入寄存器r0中
ADDC A,R0
MOV 32H,A
SJMP MAIN_OUT
MAINL:
MOV R0,B
SUBB A,R0
MOV 32H,A
MAIN_OUT:
SJMP MAIN_OUT ;死循環或加入後繼程序。
END ;不能有兩個END ,編譯器編譯到END就會結束編譯。