單片機(jī)匯編語言編程
1.編寫程序,用位處理指令實(shí)現(xiàn)“P1.4=P1.0∨(P1.1∧P1.2)∨P1.3”的邏輯功能。
MOV C,P1.1
ANL C,P1.2
ORL C,P1.0
ORL C,P1.3
MOV P1.3,C
2.編寫程序,若累加器A的內(nèi)容分別滿足下列條件,則程序轉(zhuǎn)到LABLE存儲(chǔ)單元。設(shè)A中存放的的無符號(hào)數(shù)。
(1)A≥10; (2)A>10; (3)A≤10。
(1)
CJNE A,#10,NEXT
LJMP LABLE
NEXT:
JNC LABLE
(2)
CJNE A,#10,NEXT
LJMP NEXT2
NEXT:
JNC LABLE
NEXT2:
(3)
CJNE A,#10,NEXT
LJMP LABLE
NEXT:
JC LABLE
3.編寫程序,查找片內(nèi)RAM的30H~50H單元中是否有55H這一數(shù)據(jù),若有,則51H單元置為FFH;若未找到,則將51H單元清0。
MOV R0,29H
NEXT:
INC R0
CJNE R0,#51H,NEXT2
MOV 51H,#0FFH
AJMP OVER
NEXT2:
CJNE @R0,#55H,NEXT
MOV 51H,#0
OVER:
4.編寫程序,查找片內(nèi)RAM的30H~50H單元中出現(xiàn)0的次數(shù),并將查找的結(jié)果存入51H單元。
MOV R0,30H
MOV 51H,#0
NEXT:
CJNE @R0,#00H,NEXT2
INC 51H
NEXT2:
INC R0
CJNE R0,#51H,NEXT
5.在片外RAM中有一個(gè)數(shù)據(jù)塊,存有若干字符、數(shù)字,首地址為SOURCE要求將該數(shù)據(jù)塊傳送到片內(nèi)RAM以DIST開始的區(qū)域,直到遇到字符“$”時(shí)結(jié)束($也要傳送,它的ASCII碼為24H)。
MOV DPTR,#SOURCE
MOV R0,#DIST
NEXT:
MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
CINE A,#24H,NEXT
6.片內(nèi)RAM的30H和31H單元中存放著一個(gè)16位的二進(jìn)制數(shù),高位在前,低位在后。編寫程序?qū)ζ淝笱a(bǔ),并存回原處。
CLR C
MOV A,#0
SUBB A,31H
MOV 31H,A
MOV A,#0
SUBB A,30H
MOV 30H,A
7.片內(nèi)RAM中有兩個(gè)4字節(jié)壓縮的BCD碼形式存放的十進(jìn)制數(shù),一個(gè)存放在30H~33H單元中,另一個(gè)存放在40H~43H單元中。編寫程序?qū)⑺鼈兿嗉?,結(jié)果的BCD碼存放在30H~33H中。
CLR C
MOV R0,#30H
MOV R1,#40H
MOV R2,#4
NEXT:
MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,NEXT
8.編寫程序,把片外RAM從2000H開始存放的16字節(jié)數(shù)據(jù),傳送到片內(nèi)從30H開始的單元中。
MOV DPTR,#2000H
MOV R0,#30H
MOV R1,#0
NEXT:
MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
INC R1
CINE R1,#16H,NEXT