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