資源描述:
《第4章 MCS-51單片機匯編語言程序設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第四章MCS-51單片機匯編語言程序設(shè)計【學(xué)習(xí)目的和要求】了解匯編語言程序設(shè)計中的順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)程序和子程序的設(shè)計方法。掌握代碼轉(zhuǎn)換和算術(shù)運算程序的基本編程方法和一些常用的子程序段,能正確地使用MCS-51指令編制匯編語言程序。第四章MCS-51單片機匯編語言程序設(shè)計4.1匯編語言程序設(shè)計方法4.2代碼轉(zhuǎn)換類程序4.3運算類程序第四章MCS-51單片機匯編語言程序設(shè)計4.1匯編語言程序設(shè)計方法匯編語言特點:高效、便捷用匯編語言編寫一個程序的過程分為3步:(1)分析課題,確定計算方法、運算
2、步驟和順序,畫出流程圖。(2)確定數(shù)據(jù),包括工作單元的數(shù)量,分配存放單元。(3)按所使用計算機的指令系統(tǒng),根據(jù)流程圖編寫匯編語言程序?;窘Y(jié)構(gòu)形式:順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)、子程序結(jié)構(gòu)。第四章MCS-51單片機匯編語言程序設(shè)計1、順序程序順序程序的特點和設(shè)計方法:結(jié)構(gòu)比較簡單,按程序編寫順序依次執(zhí)行,程序流向不變。使用數(shù)據(jù)傳送類指令較多,程序中沒有控制轉(zhuǎn)移類指令??勺鳛閺?fù)雜程序中的某一組成部分。第四章MCS-51單片機匯編語言程序設(shè)計【例4-1】雙字節(jié)二進(jìn)制數(shù)求補。程序說明:對R3(高8位)、R2
3、(低8位)中的二進(jìn)制定點數(shù)取反加1即可得到其補碼。程序清單:BINPL:MOVA,R2CPLA;低位字節(jié)取反ADDA,#01H;加1MOVR2,A;低位字節(jié)補碼送R2MOVA,R3CPLA;高位字節(jié)取反ADDCA,#00H;加進(jìn)位MOVR3,A;高位字節(jié)補碼送R3RET第四章MCS-51單片機匯編語言程序設(shè)計2.分支程序分支程序的特點和設(shè)計方法:程序中包含無條件轉(zhuǎn)移、條件轉(zhuǎn)移和散轉(zhuǎn)指令。單分支程序有一個入口、兩個出口,一般用無條件轉(zhuǎn)移和條件轉(zhuǎn)移指令來實現(xiàn)。其結(jié)構(gòu)形式有兩種:一種是當(dāng)條件滿足時,執(zhí)行A段
4、處理程序,否則執(zhí)行B段處理程序。另一種是當(dāng)條件滿足時,跳過A段處理程序,直接執(zhí)行B段處理程序,否則順序執(zhí)行A段和B段處理程序。分支程序的出口有兩個以上時,一般用散轉(zhuǎn)指令來實現(xiàn)。其實現(xiàn)方法有四種,分別是轉(zhuǎn)移指令表法、地址偏移量表法、轉(zhuǎn)向地址表法和利用RET指令法。分支程序允許嵌套,即一個分支接一個分支,形成樹狀多分支結(jié)構(gòu)。第四章MCS-51單片機匯編語言程序設(shè)計【例4-2】設(shè)變量x存放在VAR單元之中,函數(shù)值y存放在FUNC中,按下式給y賦值:程序清單:VAREQU30HFUNCEQU31HSTART:
5、MOVA,VAR;取xJZCOMP;為0,轉(zhuǎn)COMPJNBACC.7,POSI;>0,轉(zhuǎn)POSIMOVA,#0FFH;<0,-1送入ASJMPCOMPPOSI:MOVA,#01H;+1送入ACOMP:MOVFUNC,AEND第四章MCS-51單片機匯編語言程序設(shè)計【例4-3】32個分支轉(zhuǎn)移程序。根據(jù)入口條件轉(zhuǎn)移到32個目的地址。入口:(R3)=轉(zhuǎn)移目的地址的序號00H-1FH。出口:轉(zhuǎn)移到相應(yīng)子程序入口。程序清單:MP:MOVA,R3;取序號RLA;序號乘2MOVDPTR,#JTAB;32個子程序首地
6、址送DPTRJMP@A+DPTR;根據(jù)序號轉(zhuǎn)移JTAB:AJMPROUT00;32個子程序首地址AJMPROUT01…AJMPROUT31第四章MCS-51單片機匯編語言程序設(shè)計3.循環(huán)程序包括:循環(huán)初始化、循環(huán)處理、循環(huán)控制圖4-4循環(huán)程序流程圖的兩種組織方式第四章MCS-51單片機匯編語言程序設(shè)計循環(huán)程序的特點和設(shè)計方法:結(jié)構(gòu)緊湊,占用存儲單元較少,程序中間有分支。2.凡是分支程序中可以使用的控制轉(zhuǎn)移指令,循環(huán)程序一般都可以使用。3.循環(huán)控制有多種形式,較常用的是計數(shù)循環(huán)和條件循環(huán)兩種形式。分類:
7、單重循環(huán)程序、多重循環(huán)程序第四章MCS-51單片機匯編語言程序設(shè)計【例4-4】若Xi均為單字節(jié)數(shù),并按i(i=1~n)的順序存放在內(nèi)部RAM從50H開始的單元中,n放在R2中,要求將它們的和(雙字節(jié))放在R3、R4中。程序清單:ADD1:MOVR3,#00H;清和存儲單元MOVR4,#00HMOVR2,#n;置循環(huán)計數(shù)初值MOVR0,#50HLOOP:MOVA,R4;取部分和低位ADDA,@R0;與Xi相加MOVR4,AINCR0;Xi地址加1CLRAADDCA,R3;低位字節(jié)向高位進(jìn)位MOVR3,A
8、DJNZR2,LOOP;未加完繼續(xù)重復(fù)END入口:Xi存放在從50H開始的單元;n放在R2中。出口:和存放于R3、R4中第四章MCS-51單片機匯編語言程序設(shè)計【例4-5】已知8051單片機使用的晶振為6MHz,要求設(shè)計一個軟件延時程序,延時時間為10ms。延時程序的延時時間主要與所用晶振頻率和延時程序中的循環(huán)次數(shù)有關(guān)。由晶振頻率為6MHz可知,一個機器周期為2。入口:(R0)=毫秒數(shù);(R1)=1ms延時預(yù)定值。出口:定時到,退出程序。程序清單:ORG