![第4章AT89S51語言程序設(shè)計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/be5cc3d0-726d-4540-b306-6d4b11ea6fb8/be5cc3d0-726d-4540-b306-6d4b11ea6fb81.gif)
![第4章AT89S51語言程序設(shè)計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/be5cc3d0-726d-4540-b306-6d4b11ea6fb8/be5cc3d0-726d-4540-b306-6d4b11ea6fb82.gif)
![第4章AT89S51語言程序設(shè)計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/be5cc3d0-726d-4540-b306-6d4b11ea6fb8/be5cc3d0-726d-4540-b306-6d4b11ea6fb83.gif)
![第4章AT89S51語言程序設(shè)計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/be5cc3d0-726d-4540-b306-6d4b11ea6fb8/be5cc3d0-726d-4540-b306-6d4b11ea6fb84.gif)
![第4章AT89S51語言程序設(shè)計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/17/be5cc3d0-726d-4540-b306-6d4b11ea6fb8/be5cc3d0-726d-4540-b306-6d4b11ea6fb85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第4章章 AT89S51匯編語言程序設(shè)計匯編語言程序設(shè)計主要內(nèi)容:主要內(nèi)容: 1. 程序設(shè)計的一般方法 2. 應(yīng)用程序設(shè)計舉例 重點理解:重點理解:程序設(shè)計的一般方法和技巧程序設(shè)計的一般方法和技巧 匯編語言匯編語言 匯編語言源程序匯編語言源程序 匯編匯編 目標(biāo)程序目標(biāo)程序匯編指令與機器碼指令有一一對應(yīng)的關(guān)系。匯編指令與機器碼指令有一一對應(yīng)的關(guān)系。一、單片機編程語言一、單片機編程語言 高級語言高級語言 機器語言機器語言用匯編語言編寫程序效率高,占用存儲空間小,運行速度快??勺x性差,離不開具體的硬件,是面向“硬件”的語言。4.1 匯編語言程序設(shè)計概述匯編語言程序設(shè)計概述兩種基本語句:二、匯編語言
2、語句和格式二、匯編語言語句和格式匯編時產(chǎn)生相應(yīng)的機器代碼。執(zhí)行時對應(yīng)機器的一種操作。匯編時無機器代碼與之對應(yīng)??刂茀R編過程的一些控制命令。4.1 匯編語言程序設(shè)計概述(續(xù))匯編語言程序設(shè)計概述(續(xù))指令語句指令語句偽指令語句偽指令語句“偽”體現(xiàn)在該種指令匯編后無相應(yīng)機器代碼產(chǎn)生。具有控制匯編程序的輸入/輸出、定義數(shù)據(jù)和符號、 條件匯編、分配存儲空間等功能。ORG定位END結(jié)束匯編EQU賦值DB定義字節(jié)DW定義數(shù)據(jù)字DS定義存儲區(qū)BIT位定義常用的偽指令(七條)三、三、 偽指令偽指令4.1 匯編語言程序設(shè)計概述(續(xù))匯編語言程序設(shè)計概述(續(xù)) 1ORG(ORiGin)匯編起始地址命令匯編起始地址
3、命令(1)規(guī)定程序的起始地址。若省略,則目標(biāo)程序 從0000H地址開始。ORG 2000HORG 2500HORG 3000HORG 2500HORG 2000HORG 3000H(2)可多次用ORG指令,以規(guī)定不同程序段的起始地址。但地址必須由小到大,且不能交叉、重疊。例:三、三、 偽指令(續(xù))偽指令(續(xù)) 2. END(END of Assembly)匯編終止命令匯編終止命令整個源程序只能有一條END命令,且位于最后。 3. EQU(EQUate)標(biāo)號賦值命令)標(biāo)號賦值命令 用于給標(biāo)號賦值,賦值后標(biāo)號值在整個程序有效。例: TEST EQU 2000H表示TEST=2000H,匯編時,凡是
4、遇到TEST,均以2000H來代替。 若出現(xiàn)在程序中間,其后的源程序?qū)⒉贿M行匯編。三、三、 偽指令(續(xù))偽指令(續(xù))4DB(Define Byte)定義數(shù)據(jù)字節(jié)命令)定義數(shù)據(jù)字節(jié)命令 用于在程序存儲器連續(xù)單元中定義字節(jié)數(shù)據(jù)例: ORG 2000H DB30H,24,”C”匯編后 (2000H)=30H (2001H)=18H (十進制數(shù)24) (2002H)=43H (字符“C”的ASCII碼)三、三、 偽指令(續(xù))偽指令(續(xù))5DW(Define Word)定義數(shù)據(jù)字命令)定義數(shù)據(jù)字命令用于在程序存儲器的連續(xù)單元中定義16位的數(shù)據(jù)字例: ORG 2000H DW 1246H,7BH,10 匯
5、編后 (2000H)=12H ;第1個字 (2001H)=46H (2002H)=00H ;第2個字 (2003H)=7BH (2004H)=00H ;第3個字 (2005H)=0AH三、三、 偽指令(續(xù))偽指令(續(xù)) 6DS(Define Storage)定義存儲區(qū)命令)定義存儲區(qū)命令用于在程序存儲器中預(yù)留指定數(shù)目的連續(xù)單元例1:TABEL: DS10;從TABEL代表的地址開始,保留10個連續(xù)的地址單元。例2:ORG 2000H DS 10 H;從2000H地址開始,保留16個連續(xù)地址單元。注意:DB、DW和DS命令只能對程序存儲器有效, 不能對數(shù)據(jù)存儲器使用。三、三、 偽指令(續(xù))偽指令
6、(續(xù))三、三、 偽指令(續(xù))偽指令(續(xù)) 7BIT 位定義命令位定義命令用于給字符名稱賦以位地址。例1 :QA BIT P1.6; 把P1.6的位地址賦給變量QA。位地址可以是符號地址,也可是絕對位地址。例2: QA BIT 96H一、單片機匯編語言程序設(shè)計的基本步驟:一、單片機匯編語言程序設(shè)計的基本步驟:4.2 AT89S51匯編語言程序設(shè)計匯編語言程序設(shè)計分析題意、明確要求、設(shè)計算法等。確定數(shù)據(jù)結(jié)構(gòu):合理地選擇和分配內(nèi)存單元 以及工作寄存器;畫出程序流程圖。編寫匯編源程序。仿真、調(diào)試和優(yōu)化程序。固化程序。4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))程序編寫做到:占用存
7、儲空間少;運行時間短;結(jié)構(gòu)清晰,易讀、易于移植。 按結(jié)構(gòu)化程序設(shè)計思想,程序都可由:順序結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)等構(gòu)成等構(gòu)成二、單片機匯編語言程序設(shè)計思想:二、單片機匯編語言程序設(shè)計思想:分析: 0 1 0 1 0 1 1 04.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))三、程序舉例三、程序舉例-順序程序順序程序例1:拆字程序把70H的內(nèi)容拆開,高位送71H低位,低位送72H低位70H71H72H 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0例1:拆字程序(續(xù))4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))結(jié)束70H
8、內(nèi)容送A高低位交換,屏蔽高位送71H70H內(nèi)容送A屏蔽高位后送72H開始ORG 0000HAJMP MAIN ORG 0100HMOV 70H,#56HMOV A, 70HSWAP AANLA,#0FHMOV 71H,AMOV A,70HANLA,#0FHMOV 72H,AENDMAIN:4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))三、程序舉例三、程序舉例-分支程序分支程序通常用條件轉(zhuǎn)移指令形成簡單分支結(jié)構(gòu)。如: 判(A) = Z 或 NZ ,轉(zhuǎn)移判(CY)= 1 或 0 ,轉(zhuǎn)移判(bit)=1 或 0 ,轉(zhuǎn)移CJNE 比較不相等轉(zhuǎn)移 例2:假設(shè)內(nèi)RAM 30H、31H單
9、元內(nèi)容分別為a、b, 按下式計算Y值,并將結(jié)果存于32H單元中。 a-b (a0) a+b (a 0) Y =4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))ORG 0000HAJMP MAIN ORG 0100HMOV A, 30HA內(nèi)容為負(fù)數(shù)?結(jié)束 (30H) A計算a+b結(jié)果送32H單元開始計算a-bYNJBACC.7, JIAFACLRCSUBB A,31HSJMP DONEADDA,31HMOV 32H,AENDMAIN:JIAFA:DONE:例2程序清單4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))三、程序舉例三、程序舉例-循環(huán)程序循環(huán)程序例3
10、:數(shù)據(jù)塊傳遞程序:將內(nèi)RAM 60H6FH 內(nèi)容傳送到內(nèi) RAM 70H7FH 單元ORG0000HAJMP MAIN ORG0100HMOV R0,#60HMOV R1,#70HMOV R2,#10HMOV A,R0MOV R1,AINC R0INC R1DJNZ R2,ZHCENDNOPYN數(shù)據(jù)全部傳遞?結(jié)束 初始化 修改地址指針開始 送數(shù) 取數(shù)MAIN:ZHC:4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù)) 子程序是子程序是單獨編寫的程序段,需要時可調(diào)用。 簡化程序結(jié)構(gòu),減少占用程序存儲空間。子程序的形式與要求:子程序的形式與要求:標(biāo)明子程序的入口地址,以方便調(diào)用;指
11、出入口與出口參數(shù),以正確進行參數(shù)傳遞;常采用工作寄存器或累加器、地址指針寄存器或堆棧進行參數(shù)傳遞。注意保護現(xiàn)場;子程序的末尾用RET返回指令結(jié)束。子程序可以嵌套。三、程序舉例三、程序舉例-子程序子程序4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))有關(guān)指令:有關(guān)指令:1、堆棧操作指令、堆棧操作指令2、子程序調(diào)用指令、子程序調(diào)用指令;絕對調(diào)用指令;長調(diào)用指令A(yù)CALL addrllLCALL addr163、子程序返回指令:、子程序返回指令: RET PUSH directPOP direct;入棧指令;出棧指令三、程序舉例三、程序舉例-子程序(續(xù))子程序(續(xù))子子程程序序4.
12、2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))基本結(jié)構(gòu)基本結(jié)構(gòu)MAIN: ;MAIN為主程序入口標(biāo)號 LCALL SUB ;調(diào)用子程序SUB SUB: PUSH PSW ;現(xiàn)場保護 PUSH Acc POP Acc ;現(xiàn)場恢復(fù),注意要先進后出 POP PSW RET ;最后一條指令必須為RET 子程序處理程序段三、程序舉例三、程序舉例-子程序(續(xù))子程序(續(xù))4.2 AT89S51匯編語言程序設(shè)計(續(xù))匯編語言程序設(shè)計(續(xù))例例5:要求在P1.0引腳上產(chǎn)生周期為4ms的方波。三、程序舉例三、程序舉例-子程序(續(xù))子程序(續(xù))例5程序清單FB: CPL P1.0 ;P1.0取反
13、ACALL DL2ms SJMP FBDL2ms: MOV R7,#10 ;延時2ms的子程序DL1: MOV R6,#48 DL2: NOP NOP DJNZ R6,DL2 DJNZ R7,DL1 RET END設(shè)晶振為12MHZ,則機器周期為1us。 所以子程序延時:1+1+(1+1+2)48+210+2 = 1953 (us)三、程序舉例三、程序舉例-子程序(續(xù))子程序(續(xù))已知程序執(zhí)行前有A=02H,SP=42H, (41H)=FFH, (42H)=FFH。下述程序執(zhí)行后,A=? SP=? (41H)=? (42H)=? PC=?POPDPHPOPDPLMOV DPTR,#3000HRLAMOV B,AMOVC A,A+DPTRPUSH AccMOV A,BINCAMOVC A,A+DPTRPUSH AccRETORG#3000HDB 10H,80H,30HDB 80H,50H,80H習(xí)題習(xí)題講解講解A=80H SP=40H (41H)=50H (42H)=80H PC=8050H人有了知識,就會具備各種分析能力,人有了知識,就會具備各種分析能力,明辨是非的能力。明辨是非的能力。所以我們要勤懇讀書,廣泛閱讀,所以我們要勤懇讀書,廣泛閱讀,古人說古人說“書中自有黃金屋。書中自有黃金屋?!蓖ㄟ^閱讀科技
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度洗浴技師職業(yè)責(zé)任與勞動合同
- 二零二五年度租賃車輛租賃價格調(diào)整合同
- 2025年度物流行業(yè)員工福利待遇勞動合同
- 教育科技融合下的新機遇數(shù)學(xué)課堂中的互動游戲設(shè)計
- 智能設(shè)備在家庭防火中的應(yīng)用及效果評估
- 茶文化教育的商業(yè)價值與發(fā)展趨勢
- 二零二五年度股東出資協(xié)議書合同:人工智能教育平臺股權(quán)投資協(xié)議
- 綠色實驗技術(shù)的創(chuàng)新與應(yīng)用前景
- 提高小學(xué)生對自然的認(rèn)知自然課堂互動游戲的思考與策略
- 科技背景下的小學(xué)數(shù)學(xué)教學(xué)方法探索
- 申克篩子(型號及參數(shù))
- 渠道管理就這樣做
- 大客戶銷售這樣說這樣做
- 精裝修樣板房房屋使用說明
- 喬遷新居結(jié)婚典禮主持詞
- 小學(xué)四年級數(shù)學(xué)競賽試題(附答案)
- 魯科版高中化學(xué)必修2全冊教案
- 《病理學(xué)基礎(chǔ)》知識考核試題題庫與答案
- 人口分布 高一地理下學(xué)期人教版 必修第二冊
- 四年級上冊英語試題-Module 9 Unit 1 What happened to your head--外研社(一起)(含答案)
- 子宮內(nèi)膜異位癥診療指南
評論
0/150
提交評論