第4章單片機匯編語言程序設(shè)計-練習(xí)_第1頁
第4章單片機匯編語言程序設(shè)計-練習(xí)_第2頁
第4章單片機匯編語言程序設(shè)計-練習(xí)_第3頁
第4章單片機匯編語言程序設(shè)計-練習(xí)_第4頁
第4章單片機匯編語言程序設(shè)計-練習(xí)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第第 頁共16頁第4章單片機匯編語言程序設(shè)計第第S頁共16頁第4章單片機匯編語言程序設(shè)計AJMPRTE多字節(jié)加法子程序:JASUB:CLRJASUB1:MOVADDCMOVAJMPRTE多字節(jié)加法子程序:JASUB:CLRJASUB1:MOVADDCMOVINCINCDJNZRETCA,ROA,R1RO,AROR1R2,JASUB1,加上另一數(shù)的一個字節(jié);保存和數(shù),指向加數(shù)的高位,指向另一加數(shù)的高位;全部加完了嗎?ORG0030HSTARTMOV20H,#00H,計正數(shù)個數(shù)計數(shù)器MOVDPTR,#0000HMOVXA,DPTR,數(shù)據(jù)塊長度tIOHMOV10H,AINCDPTR.DPTR指向第一

2、個數(shù)的地址TWO:MOVXA,DPTR;取數(shù)tAJBACC.7,ONE;是負數(shù)轉(zhuǎn)ONE,準備取卜一個數(shù)INC20H;是正數(shù),正數(shù)計數(shù)器加1ONE:INCDPTR;地址指針加1DJNZ10H,TW;數(shù)據(jù)塊長度減1不等于0,繼續(xù)尋找RET編程并注釋。31若圖數(shù)據(jù)塊是有符號數(shù),求正數(shù)個數(shù),解和存放在54H,55H和56H中(56H用來存放最高位的進位),試編寫加法程序。0000HSTART0100H32兩個四位BCD碼數(shù)相加,被加數(shù)和加數(shù)分別存于和存放在54H,55H和56H中(56H用來存放最高位的進位),試編寫加法程序。0000HSTART0100HORGLJMPORGSTART:START:A

3、DDA,51HDAAMOV55H,AMOVA,52HADDCA,50HDAAMOV56H,CSJMP$END33在片內(nèi)RAM地址40H到4FH的存儲單元中存有16個無符號數(shù),找出其中的最大值,放入50H單元,請用“循環(huán)結(jié)構(gòu)”和“分支結(jié)構(gòu)”編程。答:源程序ORG0000HLJMPMAINORG01OOHMAIN:MOVR2,#0FHMOVR0,#40HMOVA,R0SUB:INCROMOVB,ROCJNEA,B,NEXTNEXT:JCNEXT1DJNZR2,SUBJMPLASTNEXT1:MOVA,BDJNZR2,SUBJMPLASTLAST:MOV50H,ASJMP$34將片內(nèi)若干個RAM單元

4、的內(nèi)容復(fù)制到片外RAM單元,請用“主程序”調(diào)用“子程序”編程,要求子程序入口參數(shù)為:R0存放片內(nèi)RAM起始地址,DPTR存放片外RAM起始地址,R1存放字節(jié)數(shù)。請分別編寫主程序和子程序。答:源程序ORG0000HLJMPMAINORG0100HMAIN:MOVR1,#10HMOVR0,#40HMOVDPTR,#0000HLCALLCOPYSJMP$COPY:NEXT:MOVA,R0MOVXDPTR,AINCROINCDPLDJNZRl,NEXTRET35試編寫程序,査找在內(nèi)部RAM的30H50H單元中是否有0AAH這一數(shù)據(jù)。若有,則將51H單元置為“01H;若未找到,則將51H單元置為-00H

5、-oORG0000HMOVR0,#30HMOVR2,#21HLOOP:MOVA,R0CJNEA,#OAAH,NOTMOV51H,#01HSJMPDENDNOT:INCRODJNZR2,LOOPMOV51H,#00HDEND:SJMPDEND36試編寫程序,査找在內(nèi)部RAM的20H40H單元中出現(xiàn)“00H這一數(shù)據(jù)的次數(shù)。并將査找到的結(jié)果存入41H單元。ORG0000HMOVR0,#20HMOVR2,#21HMOV41H,#OOHLOOP:MOVA,R0CJNEA,#OOH,NOTEINC41HNOTE:INCRODJNZR2,LOOPEND37.設(shè)有兩個4位BCD碼,分別存放在片內(nèi)RAM的23H

6、,22H單元和33H,32H單元中,求它們的和,并送入43H,42H單元中去。(以上均為低位字節(jié),高位在高字節(jié)解:ORG0000HLJMPSTARTORG003OHSTART:MOVA,22HADDA,32HDAAMOV42H,AMOVA,23HADDCA,33HDAAMOV43H,ASJMP$END38.編程將片內(nèi)RAM的40H60H單元中內(nèi)容送到片外RAM以3000H開始的單元中。解:ORG0000HLJMPMAINORG003OHMAIN:MOVR7,#20HMOVR1,#40HMOVDPTR,#3000HLOOP:MOVA,R1MOVXDPTR,AINCR1INCDPTRDJNZR7,

7、LOOPSJMP$END39.試編一査表程序,從首地址為2000H.長度為9FH的數(shù)據(jù)塊中找出第一個ASCII碼A,將其地址送到20A0H和20A1H單元中。解:ORG0000HLJMPMAINORG003OHMAIN:LCALLSUBONEAJMP$,SUBONEusedpti;a,30h,31hSUBONE:MOVDPTR,#2000HLOOP:MOVXA,DPTRXRLA,#41HJNZTTMOVA,30HMOVDPTR,#20A0HMOVXDPTR,AMOVDPTR,#2OA1HMOVA,31HMOVXDPTR,ARETINCDPTRMOV30H,DPHMOV31H,DPLMOVA,3

8、1HCJNEA,OOH,LOOPRETTT:END40.請編程:片外RAM2000H開始的單元中有10個字節(jié)的二進制數(shù),求它們之和,并將結(jié)果存儲在片內(nèi)RAM的30H的單元中(和V256)o答案:ORG0000HIMPMAINORG0100HMAIN:MOVR7,#0AHMOVDPTR,#2000HMOV30H,#00HADDIO:MOVXA,DPTRADDA,30HMOV3OH,AINCDPTRDJNZR7,ADDI0SJMP$END42、閱讀程序,回答問題:設(shè)(70H)=60H,(60H)=20H,Pl口為輸入口,當前的輸入狀態(tài)為B7H,執(zhí)行下面的程序:MOVRO,#70HMOVA,R0MO

9、VRl,AMOVB,R1MOVR0,Pl執(zhí)行后結(jié)果:(70H)=B7H,(B)=20H,(Rl)=60H,(RO)=70H。已知(A)=58H,(30H)=7FH,(Pl)=EAH,執(zhí)行下列程序:MOVSP,#40HPUSHAPUSH30HMOVA,PlMOV30H,APOP30HPOPA執(zhí)行后結(jié)呆:(SP)=40H,(A)=58H,(30H)=7FH(41H)=58H。(3)已知(30H)=49H,(31H)=2BH,(32H)=0A3H,執(zhí)行以下程序:MOVR7,#4RRO:MOVR6,#3CLRCMOVRO,#30HRR1:MOVA,R0RRCAMOVR0,AINCRODJNZR6,RR

10、1DJNZR7,RRORET從該程序可看出這段程序的功能是:將內(nèi)RAM中30H32H的內(nèi)容右移4位,空位補0。(4分)執(zhí)行后結(jié)果:(30H)=04H,(31H)=92H,(32H)=BAHo(4)按要求根據(jù)注釋將下列程序補充完整:將內(nèi)RAM的30HVFH16個單元中的數(shù)據(jù)比較大小,最大的數(shù)據(jù)存在40H單元內(nèi)。(每空1.5分,共9分)MOV40H,30H:將初始單元送40H單元MOVRO,#31HMOVR7,#15;設(shè)置循環(huán)次數(shù)LOOP:CLRC:進位標志清0MOVA,40H;最人數(shù)給ASUBBA,R0:最人數(shù)與R0間址區(qū)相減JNCDY;A大于(R0)跳到DYMOVA,40H;小于則交換XCHA

11、,(ROMOV40H,ADY:INCRO:數(shù)據(jù)區(qū)指向下一單元DJNZR7,LOOP;循環(huán)是否結(jié)束?未結(jié)束跳到LOOPRET43、根據(jù)各題要求寫出指令(共20分)(1)將片外RAM0030H單元的高4位清0,低4位不變。(4分)MOVDPTR,#0030HMOVXA,DPTRANLA,#0FHMOVXDPTR,A將片外RAM單元2000H的內(nèi)容送給片外3001H單元。(4分)MOVDPTR,#2000HMOVXA,DPTRMOVDPTR,#3000HMOVXDPTR,A完成兩個16位數(shù)的減法:744DH2B4EH,結(jié)果存入內(nèi)部RAM的30H和31H單元,31H單元存放高字節(jié),30H單元存放低字節(jié)

12、(7分)CLRCYMOVA,#4DHSUBBA,#4EHMOV30H,AMOVA,74HSUBBA,#2BHMOV31H,A將內(nèi)部RAM中的20H、21H單元的兩個無符號數(shù)相乘,結(jié)果存放在R2.R3中,其中R2存放高8位.R3存放低8位。(5分)MOVA,20HMOVB,21HMULABMOVR2,BMOVR3,A45.讀程序,寫結(jié)果。(每空1分,共8分)若(Rl)=30H,(A)=40H,(30H)=60H,(40H)=08Ho執(zhí)行下列程序段:MOVA,R1;MOVR1,40H,MOV40H,A;MOVRb#7FH,執(zhí)行后結(jié)果:(A)=60H,(30H08H,(40H60H,(R17FH己知

13、(A)=59H,(B)=7FH,(Pl)=OEAH,執(zhí)行下列程序:MOVSP,#40HPUSHAPUSHBMOVA,PlINCPlMOVB,PlMULABPOP3OHPOPA執(zhí)行后結(jié)果:(SP)=40H,(A)=59A,(B)=7FH,(Pl)=OEAH。46、按要求根據(jù)注釋將下列程序補充完整。(每空1分,共12分)(1)將內(nèi)RAM的30HVFH16個單元中的數(shù)據(jù)比較大小,最大數(shù)據(jù)存在40H單元內(nèi)。(每空1分,共6分)MOV40H,30H:將初始單元送40H單元MOVRO,#31HMOVR7,#15;設(shè)置循環(huán)次數(shù)LOOP:CLRC:進位標志清0MOVA,40H:最人數(shù)給ASUBBA,R0:最人

14、數(shù)與R0間址區(qū)相減JNCDY;A大于(R0)跳到DYMOVA,40H;小于則交換XCH宓0MOV40H,ADY:INCRO:數(shù)據(jù)區(qū)指向卞一單元DJNZR7,LOOP:循壞是否結(jié)束?未結(jié)束跳到LOOPRET(2)已知變量X存放在內(nèi)存RAM單元30H中,變量的取值范圍在05之間,將變量的平方值存放在內(nèi)存RAM單元40H中。試采用兩個不同的方法完成此功能方法一:MOVA,30H;取變量,送入累加器ADDA,#02;修改變量的值MOVCAtA+PC:查表,取變最的平方值MOV40H,A將平方值存入40H單元中TAB:DB00,Oh04,09,16,25方法二:MOVA,30H;取變鼠,送入累加器MOV

15、DPTR,#TAB:將表格的首址送DPTRMOVCAtA+DPTR:查表,取變彊的平方值MOV40H,A:將平方值存入40H單元中TAB:DB00,Ob04,09,16,2547.閱讀程序,寫出結(jié)果L若(10H)=OFFHX11H)=OOH,(12H)=OFFH,(13H)=OOH,寫出每一步指令運行結(jié)果MOVA,10HANLA,#01HMOVA,11HORLA,#01HMOVA,12HXRLA,#01HMOVA,13H(A)=0FFH(A01H,(A)=00H,(A)=01H,(AFFH.(A)=01H,(A)=00H,XRLA,#0AH(A)=0AH(10H)=FFH,(11H)=OOH,

16、(12H)=FFH(13H)=00H,MOV30H,#60HMOVR0,#60HMOVA,30HMOVB,AMOVR0,B(A)=60H,(R0)=60H,(B60H,3.MOVSP,#60HMOVA,#01H(A01H,MOVB,#02H(B)=02H,PUSHA(SP)=61H,PUSHB(SP)=62H,POPAPOPB(60H)=01H,48、程序分析:外部RAM3000H,3001H單元的內(nèi)容分別為55H,0DDH,試分析如下程序,并回答問題。程序1:MOVDPTR,#3000HMOVR1,#40HMOVXA,DPTRMOVR1,AINCR1INCDPTRMOVXA,DPTRMOVR

17、1,A問題1:若執(zhí)行上述程序,結(jié)束后,DPTR值為3OQ1H,R1的內(nèi)容為55H,8031內(nèi)部RAM41H單尤的內(nèi)容DDH,40H單元內(nèi)容為55Ho在上程序中,若繼續(xù)執(zhí)行如卜程序程序2:START:MOVDPTR,#3000HMOVR1,#40HMOVA,R1MOVXDPTR,A問題2:START執(zhí)行結(jié)束后,DPTR的值為3000H,4000H單元的內(nèi)容為55H,R1的內(nèi)容為40H。問題3:執(zhí)行如卜程序,填出A寄存器的內(nèi)容。程序3.MOVA.#88HMOVr7#aahORLA.、R7:A的內(nèi)容為AAHMOVA,#37HMOVR7,#89HANLA,R7A的內(nèi)容為:01HXRLR7A的內(nèi)容為:8

18、8HRET如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,則執(zhí)行下列指令后:POPDPH,POPDPL,POPSP,則:(DPH3CH;(DPL)=5FH;(SP)=50H;(6分)50、編寫程序,將外部數(shù)據(jù)存儲器中的5000H-50FFH單元全部清零(10分)。TOC o 1-5 h z答:ORG嚇艸H(1分)MOVDPTR#5000HMOVR0,#00HCLRA(3分)LOOP:MOVXDPTR,AINCDPTR(3分)DJNZRO,LOOP(2分)HERE:SJMPHERE(RET,SJMP$等)(1分)51已知程序執(zhí)行前有A=

19、02H,SP=52H,(51H)=FFH,(52H)=FFHO下述程序執(zhí)行后:POPDPHPOPDPLMOVDPTR,#4000HRLAMOVB,AMOVCA,A+DPTRPUSHAMOVA,BINCAMOVCA,A+DPTRPUSHARETORG4000HDB10H,80H,30H,50H,30H,50H請問:A=(50H),SP=(50H),(51H)=(30H),(52H)=(50H),PC=(5030H)。設(shè)內(nèi)部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,問執(zhí)行下列指令后,各有關(guān)存儲單元(即RO,Rl,A,B,Pl,30H,40H及5AH單元)的

20、內(nèi)容如何?MOVR0,#3OH;MOVA,R0tMOVR1,A;MOVB,R1;MOVR1,P1;MOVA,P1;MOV40H,#20H,MOV30H,40H;每一條指令執(zhí)行后的結(jié)果如注釋字段所標。最后結(jié)果為:R0=(30H),R1=(5AH),A=(7FH),B=(5AH),Pl=(7FH),(30H)=(20H),(40H)=(20H),(5AH)=(7FH)。假定SP=40H,(39H)=30H,(40H)=60Ho(4分)POPDPHPOPDPL執(zhí)行上面指令后,DPTR的內(nèi)容為6030H,SP的內(nèi)容是3EH。請將片外RAM20H25H單元清零答:MOVRO,#20H(1分)MOVR7,

21、#06H(1分)CLRA(1分)LOOP:MOVXR0,A(1分)INCRO(1分)DJNZR7,LOOP(1分)請將ROM3000H單元內(nèi)容送R5(4分)MOVDPTR,#3000H(1分)CLRA(1分)MOVCA,A+DPTR(1分)MOVR5,A(1分)閱讀程序(30分)己知A=5BH,CY=1時,則執(zhí)行SUBBA,#8EH指令后,(5分)A=CCH,CY=_1_,AC=_1_OV=_1_,P=0寫出下列磧段執(zhí)行后,柯岳存器或存佛承元的內(nèi)蓉麗)MOVSP,6FHMOV30H,#12HMOV31H,#34HPUSH30HPUSH31HPOPBPOPACCSJMP$A=12H,B=34H,

22、(30H)=12H,(31H)=34H,(70H)=12H,(71H)=34H卜列各條指令其源操作數(shù)的尋址方式是什么?各條指令單獨執(zhí)行后,A中的結(jié)杲是什么?(5分)設(shè)(60H)=35H,A=19H,Ro=3OH,(30H)=0FHoMOVA,#48HADDA,60HANLA,R04、寫出卜MOVA,#48HADDA,60HANLA,R04、寫出卜列程序段執(zhí)行后,尋址方式:血接訃址,A=4EH尋址方式:寄心器間接訂址,A=_09H相關(guān)寄存器或存儲單元的內(nèi)容。MOVA,#7AHMOV35H,#3OHANLA,#0F0HSWPAORL35H,ASJMP$A=07H(35H)=37H5、寫出卜列程序段執(zhí)行后,相關(guān)寄存器或存儲單元的內(nèi)容。(4分)MOVA,#03HRLAMOVB,ARLARLAADDA,BSJMP$A=1EHB=06H6、在程序存儲器中,數(shù)據(jù)表格為(6分)2000H:30H2001H:40H2002H:50H2003H:60H2004H:70H執(zhí)行程序:1500H:MOVA,#00H1502H:INCA1503H:MOVDPTR,#2000H1506H:MOVCA,A+DPTR結(jié)果:a=40H,PC=1509H,DPL=OOH閱讀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論