《51單片機(jī)匯編程序設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《51單片機(jī)匯編程序設(shè)計(jì)(49頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),請(qǐng)單擊鼠標(biāo)左鍵換頁(yè)!,3.3,匯編語(yǔ)言程序設(shè)計(jì),3.3.1,匯編語(yǔ)言及其語(yǔ)句格式,1,、匯編語(yǔ)言,這里介紹,MCS-51,單片機(jī)的匯編語(yǔ)言。,2,、匯編語(yǔ)言的語(yǔ)句格式,一條匯編語(yǔ)言的語(yǔ)句包括四部分內(nèi)容:標(biāo)號(hào)、操作碼、操作數(shù)和注釋。其格式為:,標(biāo)號(hào):操作碼操作數(shù);注釋,例如:,LOOP:MOV A,#20H,;,(A)20H,3.3.2,偽指令,1,、,定位偽指令,格式:,ORG n,2,、,定義字節(jié)偽指令,格式:標(biāo)號(hào):,DB,X1,X2,Xn,此偽指令的功能是把,Xi,存入從標(biāo)號(hào)開始連續(xù)的單元中。,3,、,定義
2、雙字節(jié)偽指令,格式:標(biāo)號(hào):,DW X1,,,X2,,,Xn,此偽指令的功能是把,Xi,存入從標(biāo)號(hào)開始的連續(xù)單元中。,4,、,預(yù)留存貯區(qū)偽指令,格式:,DS n,DS n,從標(biāo)號(hào)指定單元開始,預(yù)留,n,個(gè)單元的存貯區(qū)。,5,、,賦值偽指令,格式:字符名稱,x EQU n,此指令的功能是將數(shù)據(jù)或地址,n,賦給字符名稱。,6,、,結(jié)束匯編指令,格式:,END,END,指示源程序到結(jié)束,常將其放在匯編語(yǔ)言源程序的末尾。,3.3.3,匯編語(yǔ)言程序設(shè)計(jì)過程,1,、,分析任務(wù),確定算法或解題思路,2,、,根據(jù)算法和解決思路畫出程序流程圖,流程圖是由一些框圖和流程線組合而成:,置的框圖連接在一起,位于不同框圖
3、的圈內(nèi),應(yīng)標(biāo)注相同的字母。,3,、,根據(jù)流程圖編寫程序,4,、,上機(jī)調(diào)試程序,3.3.4,順序結(jié)構(gòu)程序設(shè)計(jì),按照程序編寫的順序,依次執(zhí)行。任何復(fù)雜的程序,都含有較大成份的順序結(jié)構(gòu)程序。,【,例,3-8,】,將兩位壓縮,BCD,碼轉(zhuǎn)換成二進(jìn)制數(shù),編程思路:(,a,1,a,0,),BCD,=a,1,10+a,0,編程說明:待轉(zhuǎn)換的兩位壓縮,BCD,碼存放于,R2,,,轉(zhuǎn)換結(jié)果存回,R2,。,程序流程圖如圖,3-1,所示。,編程如下:,START:MOV A,R2,ANL A,#0F0H,;,取高位,BCD,碼,SWAP A,MOV B,#0AH,MVL AB,MOV R3,A,MOV A,R2,A
4、NL A,#0FH,;,取低位,BCD,碼,ADD A,R3,MOV R2,A,END,3.3.5,分支程序設(shè)計(jì),【,例,3-9,】,求符號(hào)函數(shù)的值,1,當(dāng),X0,Y=0,當(dāng),X=0,的值。,-1,當(dāng),X9,時(shí),加,37,H,。,程序流程如圖,3-11,所示。,參考程序如下:,ORG 0100 H,MOV A,40 H,ANL A ,#0F H,CLR C,SUBB A,#0AH,JC NEXT,ADD A,#0AH,ADD A,#37H,SJMP SAVE,NEXT:ADD A,#0AH,ADD A,#30H,SAVE:MOV 40H,A,END,(,2,),查表求解:,ORG 0100H,
5、MOV A,40H,ANL A,#0FH,ADD A,02H,MOVC A,A+PC,MOV 40H,A,DB,0,1,2,3,4,5,DB,6,7,8,9,A,B,DB,C,D,E,F,END,3.3.9,子程序設(shè)計(jì),1,、,子程序的調(diào)用與返回,MCS-51,單片機(jī)有兩條子程序調(diào)用指令:,ACALL addr11,、,LCALL addr16,;,一條子程序返回指令,RET,。,2,、,保存與恢復(fù)寄存器內(nèi)容,例如:,SUB1:PUSH PSW,PUSH A,PUSH R6,(,此處省略了子程序的內(nèi)容,),POP R6,POP A,PUSH PSW,3,、,子程序的參數(shù)傳遞,主程序在調(diào)用子程序
6、時(shí),經(jīng)常需要傳送一些參數(shù),子程序運(yùn)行完后也經(jīng)常將一些參數(shù)回送給主程序,這叫參數(shù)傳遞。,【,例,3-17,】,編程計(jì)算,c=a,2,+b,2,。,編程說明:這個(gè)問題中,計(jì)算某數(shù)的平方可以用子程序來實(shí)現(xiàn),兩次調(diào)用該子程序,并求和便得到所需結(jié)果。設(shè),a,、,b,分別存于內(nèi)部,RAM,的,30,H,、,31H,單元,結(jié)果,C,存于內(nèi)部,RAM,的,40,H,單元。,參數(shù)傳遞:主程序中,將某數(shù)存放到累加器,A,中,作為子程序的入口參數(shù);子程序中,將所求數(shù)的平方值存放在累加器,A,中,作為出口參數(shù)(即主程序的返回值)。,子程序的入口參數(shù):,A,中存放某數(shù)的值。,子程序的出口參數(shù):,A,中存放所求數(shù)的平方。,子程序如下:,SQR:INC A,MOVC A,A+PC,;,查平方表,RET,TABLE:,DB,0,1,4,9,16,DB,25,36,49,64,81,主程序流程圖如圖,3-12,所示。,主程序如下:,START:MOV A,30H,ACALL SQR,;,調(diào)查表子程序,MOV R1,A,;,a,2,暫存,R1,中,MOV A,31H,ACALL SQR,;,調(diào)查表子程序,ADD A,R1,MOV 40H,A,END,4,、,子程序的嵌套,3.4,MCS-51,匯編語(yǔ)言實(shí)用程序設(shè)計(jì),(,略,),