版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機原理與應(yīng)用Principles and Applications of Micro-controller汽車與交通工程學(xué)院Email:Tel:講:陳林林聊城大學(xué)第1頁,共32頁。第4章 MCS-51匯編語言程序設(shè)計基礎(chǔ)程序設(shè)計的步驟和偽指令。源程序、目標(biāo)代碼、編輯和匯編的基本概念。順序程序、分支程序、循環(huán)程序、子程序的設(shè)計。算術(shù)運算和數(shù)碼轉(zhuǎn)制程序設(shè)計 。第2頁,共32頁。本章主要內(nèi)容 4.1 匯編語言程序設(shè)計基礎(chǔ) 4.2 順序程序設(shè)計 4.3 分支程序設(shè)計 4.4 循環(huán)程序設(shè)計 4.5 子程序設(shè)計 4.6 算術(shù)運算和數(shù)碼轉(zhuǎn)制程序設(shè)計第3頁,共32頁。4.1 匯編
2、語言程序設(shè)計基礎(chǔ) 1. 機器語言4.1.1 程序設(shè)計語言簡介2. 匯編語言用二進制編碼表示每條指令。計算機能夠直接執(zhí)行用機器語言編出的機器碼程序。不同種類的計算機,由于其內(nèi)部結(jié)構(gòu)不完全相同,它的機器碼指令也不一定相同。符號化的機器語言。它用一些容易理解和記憶的符號代替機器碼指令,又稱為助記符語言,助記符指令與機器碼指令一一對應(yīng)。不同結(jié)構(gòu)的計算機,匯編指令不相同。第4頁,共32頁。4.1.1 程序設(shè)計語言簡介匯編語言和特點:對比機器碼,匯編語言克服了機器語言的缺點,方便了用戶記憶指令和編寫程序,但用匯編語言編寫的源程序需用匯編程序“翻譯”成機器碼后方可執(zhí)行。采用匯編語言編寫程序,可以直接訪問和操
3、作單片機中的寄存器及存儲器單元,對數(shù)據(jù)的處理表述的非常具體。因此,在計算機實時測試和控制領(lǐng)域中得到了廣泛應(yīng)用。接近自然語言和數(shù)學(xué)語言的算法語言,具有直觀、通用等特點。不象機器語言和匯編語言編寫程序需要完全了解CPU硬件結(jié)構(gòu),且程序不能移植。 3.高級語言第5頁,共32頁。4.1.2 匯編語言程序設(shè)計步驟1分析問題,確定算法程序設(shè)計中最重要的一步。設(shè)計人員必須認(rèn)真、仔細地考慮系統(tǒng)需要解決的各種問題以及將來系統(tǒng)功能的進一步擴展,明確知道程序要解決的問題和接收、處理、發(fā)送的數(shù)據(jù)范圍以及使用什么樣的算法。 2畫流程圖流程圖是用各種圖形、符號、有向線段來直觀地表示程序執(zhí)行的步驟和順序。它可使人們通過流程
4、圖的基本線索,對全局有完整的了解。 第6頁,共32頁。4.1.2 匯編語言程序設(shè)計步驟4調(diào)試、測試程序調(diào)試是利用仿真器等開發(fā)工具,采用單步、設(shè)斷點、連續(xù)運行等方法排除程序中的錯誤,完善程序的功能。3編寫匯編語言源程序根據(jù)流程圖用匯編語言指令實現(xiàn)流程圖的每一個步驟,從而編寫出匯編語言的源程序。第7頁,共32頁。4.1.3 偽指令 1. 匯編起始偽指令ORG格式:ORG 16位地址功能:規(guī)定該指令后面的源程序匯編后所產(chǎn)生的目標(biāo)程序存放的起始地址。 例4.1 ORG 2000HMAIN:MOV A,#50H2.匯編結(jié)束偽指令END格式: END 功能:通知匯編程序結(jié)束匯編。匯編時遇到END指令,則結(jié)
5、束所有匯編工作,而END之后的所有指令將不予處理。第8頁,共32頁。4.1.3 偽指令 3. 賦值偽指令EQU格式:字符名稱 EQU 賦值項 功能:把該偽指令右邊的值賦項給左邊用戶定義的符號。 例4-3 COUNT EQU 64H MOV A,COUNT ;A(64H)注意:使用EQU偽指令時,必須先賦值,后使用,故該指令通常放在程序開頭。而賦值后的“字符”,其值在整個程序中不改變,并可多次使用。 第9頁,共32頁。4.1.3 偽指令 4. 定義數(shù)據(jù)字節(jié)偽指令DB 格式:標(biāo)號: DB 字節(jié)數(shù)據(jù)表 功能:從指定的地址單元開始,定義若干個字節(jié)的數(shù)據(jù)或ASCII碼字符 。 例4-4 ORG 2000
6、HTAB:DB 99H,00H,01H,02H,03H,04HSTR:DB ABC 以上偽指令經(jīng)匯編后在程序儲存器中的2000H2008H單元的內(nèi)容為:99H、00H、01H、02H、03H、04H、41H、42H、43H。第10頁,共32頁。4.1.3 偽指令 5. 定義數(shù)據(jù)字節(jié)偽指令DW 格式:標(biāo)號: DW 16 位數(shù)據(jù)表 功能:從指定的地址單元開始,定義若干個字?jǐn)?shù)據(jù)(16位)。 例4-5 ORG 2000H TAB:DW 1234H,50H,CD以上偽指令經(jīng)匯編后,程序存儲器中的2000H2005H單元的內(nèi)容為:12H、34H、00H、50H、43H、44H。第11頁,共32頁。4.1.
7、3 偽指令 6. 數(shù)據(jù)地址賦值偽指令DATA格式:標(biāo)號 DATA 表達式功能:把由表達式指定的數(shù)據(jù)地址或代碼地址賦予規(guī)定的標(biāo)號。DATA偽指令的功能和EQU偽指令相似,但DATA偽指令所定義的符號可先使用后定義。在程序中它常用來定義數(shù)據(jù)地址。該語句一般放在程序的開頭和末尾。 第12頁,共32頁。4.1.3 偽指令 7.定義存儲區(qū)偽指令DS 格式:標(biāo)號: DS 表達式功能:從指定的地址單元開始,保留由表達式指定的若干字節(jié)空間,以備程序使用。 例4-6 ORG 2000H DS 05 DB 11H,22H,33H以上偽指令經(jīng)匯編后從2000H單元開始,保留5個字節(jié)的存儲單元,從2005H單元開始連
8、續(xù)存放11H,22H,33H代碼。 第13頁,共32頁。4.1.3 偽指令 8.位地址賦值偽指令BIT格式:字符名稱 BIT 位地址功能:把位地址賦予規(guī)定的字符名稱,常用于定義位符號地址。例4-7 AA BIT P1.7 BB BIT P1.6匯編后P1.7和P1.6(位地址)賦給變量AA和BB,在程序中就可以把AA和BB作為位地址使用。上面介紹了MCS-51單片機匯編語言中常用的偽指令。在編寫匯編語言源程序時,必須嚴(yán)格按照匯編語言的規(guī)范書寫。 第14頁,共32頁。4.2 順序程序設(shè)計順序程序(又稱簡單程序)是一種最簡單、最基本的程序。程序按編寫的順序從第一條指令開始執(zhí)行,直到最后一條指令為止
9、。計算機是按指令在存儲器中存放的先后次序來順序執(zhí)行程序的。它會在PC控制下順序執(zhí)行。這種程序雖然簡單,但它是構(gòu)成復(fù)雜程序的基礎(chǔ)。例4-9 將兩個半字節(jié)數(shù)合并成一個一字節(jié)數(shù)。設(shè)內(nèi)部RAM的40H、41H單元中分別存放著8位二進制數(shù)。要求取出兩個單元中的低半字節(jié)、合并成一個字節(jié)后,存42H單元。第15頁,共32頁。 ORG 0000HSTART:MOV R1,#40H MOV A,R1 ANL A,#0FH SWAP A INC R1 XCH A,R1 ANL A,#0FH ORL A,R1 INC R1 MOV R1,A RET END4.2 順序程序設(shè)計第16頁,共32頁。例4-10 拆字程序
10、:將40H單元中的內(nèi)容拆開后分別送41H、42H單元中。 ORG 0000HSTART:MOV R1,#40H MOV A,R1 MOV B,A ;暫存B中 ANL A,#0FH ;取第一個半字節(jié) INC R1 MOV R1,A ;存放第一個半字節(jié) MOV A,B SWAP A ANL A,#0FH ;取第二個半字節(jié) INC R1 MOV R1,A ;存放第二個半字節(jié) END4.2 順序程序設(shè)計第17頁,共32頁。4.3 分支程序設(shè)計分支程序條件分支無條件分支LJMP、AJMP單分支多分支JZ、JNZCJNZ、DJNZ等JNC、JB、JNB、JBC等第18頁,共32頁。4.3 分支程序設(shè)計例4
11、-11 兩個無符號數(shù)比較大小設(shè)兩個連續(xù)外部RAM單元ST1和ST2中存放無符號的二進制數(shù),找出其中的大數(shù)存入ST3單元中。用減法指令SUBB來比較兩數(shù)的大小。執(zhí)行該指令前,先把進位位清零。通過借位(CY)的狀態(tài)判斷兩數(shù)的大小。設(shè)兩個數(shù)X和Y,當(dāng)XY時,(CY)0;XY ,(CY)1 。用減法指令比較大小,會破壞累加器中的內(nèi)容,故作減法前先保存累加器中的內(nèi)容。執(zhí)行JNC指令后,形成了分支。執(zhí)行SJMP指令后,實現(xiàn)程序的轉(zhuǎn)移。第19頁,共32頁。 ORG 8000H ST1 EQU 8040H START1:CLR C MOV DPTR,#ST1 MOV XA,DPTR MOV R2,A INC
12、DPTR MOV XA,DTPR SUBB A,R2 JNC BIG1 XCH A,R2BIG0: INC DPTR MOVX DPTR,A4.3 分支程序設(shè)計 SJMP $BIG1:MOV XA,DPTR SJMP BIG0 END第20頁,共32頁。例4-12 將ASCII碼表的ASCII碼轉(zhuǎn)換為十六進制數(shù),如果ASCII碼不能轉(zhuǎn)換成十六進制數(shù),用戶標(biāo)志位置1。由ASCII碼表可知,30H39H為09的ASCII碼,41H46H為AF的ASCII碼。在這一范圍內(nèi)的ASCII碼減30H或37H就可以獲得對應(yīng)的十六進制數(shù)。設(shè)ASCII碼放在累加器A中,轉(zhuǎn)換結(jié)果放回A中。流程圖如右圖所示。4.3
13、 分支程序設(shè)計第21頁,共32頁。4.3 分支程序設(shè)計 ORG 0000HSTART:CLR C SUBB A,#30H JC NASC CJNE A,#0AH,MMMM: JC ASC SUBB A,#07H CJNE A,#0AH,NNNN: JC NASC CJNE A,#10H,LLLL: JC ASCNASC: SETB F0ASC: RET END第22頁,共32頁。4.4 循環(huán)程序設(shè)計在程序設(shè)計中,只有簡單程序和分支程序是不夠的。因為簡單程序,每條指令只執(zhí)行一次,而分支程序則根據(jù)條件的不同,會跳過一些指令,執(zhí)行另一些指令。它們的特點是,每一條指令至多執(zhí)行一次。在處理實際事務(wù)時,有
14、時會遇到多次重復(fù)處理的問題,用循環(huán)程序的方法來解決就比較合適。循環(huán)程序中的某些指令可以反復(fù)執(zhí)行多次。采用循環(huán)程序,使程序縮短,節(jié)省存儲單元。重復(fù)次數(shù)越多,循環(huán)程序的優(yōu)越性就越明顯。但是并不節(jié)省程序的執(zhí)行時間。由于要有循環(huán)準(zhǔn)備、結(jié)束判斷等指令,循環(huán)程序執(zhí)行速度要比簡單程序稍慢些。第23頁,共32頁。4.4.1 循環(huán)程序結(jié)構(gòu)1. 循環(huán)程序的組成 初始化部分:為循環(huán)程序做準(zhǔn)備。如設(shè)置循環(huán)次數(shù)計數(shù)器的初值,地址指針置初值,為循環(huán)變量賦初值等。處理部分:為反復(fù)執(zhí)行的程序段,是循環(huán)程序的實體。修改部分:每執(zhí)行一次循環(huán)體后,對指針做一次修改,使指針指向下一數(shù)據(jù)所在位置,為進入下一輪處理做準(zhǔn)備。控制部分:根據(jù)
15、循環(huán)次數(shù)計數(shù)器的狀態(tài)或循環(huán)條件,檢查循環(huán)能否繼續(xù)執(zhí)行,若循環(huán)次數(shù)已達到或循環(huán)條件不滿足,應(yīng)控制退出循環(huán),否則繼續(xù)循環(huán)。通常處理、修改、控制部分又稱為循環(huán)體。結(jié)束部分:分析及存放執(zhí)行結(jié)果。第24頁,共32頁。4.4.1 循環(huán)程序結(jié)構(gòu)2. 循環(huán)程序的結(jié)構(gòu) 先進入處理部分,再控制循環(huán)。即至少執(zhí)行一次循環(huán)體。先控制循環(huán),后進入處理部分。即先根據(jù)判斷結(jié)果,控制循環(huán)的執(zhí)行與否,有時可以不進入循環(huán)體就退出循環(huán)程序。第25頁,共32頁。4.4.2 循環(huán)程序設(shè)計1. 單循環(huán)程序 循環(huán)次數(shù)已知的循環(huán)程序例4-14 工作單元清零。將40H為起點的8個單元清0。注:此程序的前24句為設(shè)定循環(huán)初值,57句為循環(huán)體。 O
16、RG 0000HCLEAR:CLR A MOV R0,#40H MOV R7,#08 LOOP: MOV R0,A INC R0 DJNZ R7,LOOP END第26頁,共32頁。4.4.2 循環(huán)程序設(shè)計1. 單循環(huán)程序 循環(huán)次數(shù)已知的循環(huán)程序例4-14 工作單元清零。將外部2000H開始的50個RAM單元清零。注:本例中循環(huán)次數(shù)已知,用R2作循環(huán)次數(shù)計數(shù)器,用DJNZ指令修改計數(shù)器值,并控制循環(huán)的結(jié)束與否。 ORG 0000H MOV DPTR,#2000H CLEAR:CLR A MOV R2,#32H LOOP:MOVX DPTR,A INC DPTR DJNZ R2,LOOP END
17、第27頁,共32頁。4.4.2 循環(huán)程序設(shè)計循環(huán)次數(shù)未知的循環(huán)程序例4-17 測試字符串長度設(shè)有一串字符依次存放在從50H單元開始的連續(xù)單元中,該字符串以回車符為結(jié)束標(biāo)志,測得的字符串長度存入R2中。 ORG 0000HCONT :MOV R2,#00H MOV R0,#50HNT:CJNE R0,#0DH,LP RETLP:INC R0 INC R2 SJMP NT END待測字符以ASCII碼形式存放在RAM中,回車符的ASCII碼為0DH,程序中用一條“CJNE R0,#0DH,LP”指令實現(xiàn)字符比較及控制循環(huán)任務(wù)的結(jié)束。 第28頁,共32頁。4.4.2 循環(huán)程序設(shè)計2. 多循環(huán)程序 例
18、4-18 試編寫延時程序。延時程序與MCS-51執(zhí)行指令的時間有關(guān),如果使用6 MHz晶振,一個機器周期為2s,計算出執(zhí)行一條指令以至一個循環(huán)所需要的時間,給出相應(yīng)的循環(huán)次數(shù),便能達到延時的目的。DEL: MOV R5,#100DEL0:MOV R6,#200DEL1:MOV R7,#248 NOPDEL2:DJNZ R7,DEL2 ; DJNZ R6,DEL1 ; DJNZ R5,DEL0 ; RET第29頁,共32頁。4.4.2 循環(huán)程序設(shè)計它是一個三重循環(huán)程序,利用程序嵌套的方法對時間進行延遲是程序設(shè)計中常用的方法。使用多重循環(huán)程序時,必須注意以下幾點:(1)循環(huán)嵌套,必須層次分明,不允許產(chǎn)生內(nèi)外層循環(huán)交叉。(2)外循環(huán)可以一層層向內(nèi)循環(huán)進入,結(jié)束時由里往外一層層退出。(3)內(nèi)循環(huán)體可
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省景洪市第三中學(xué)2014-2021學(xué)年高二上學(xué)期期末考試數(shù)學(xué)試題
- 《分銷渠道的設(shè)計》課件
- 2021拉薩市高考英語閱讀理解、書面表達自練(5)答案(三月)
- 四年級數(shù)學(xué)(四則混合運算)計算題專項練習(xí)與答案
- 【創(chuàng)新設(shè)計】2021高考政治一輪復(fù)習(xí)提能檢測:第8課-財政與稅收
- 【2021屆備考】2021屆全國名校生物試題分類解析匯編第六期(11月)-M單元-實驗
- 2021高考英語閱讀類訓(xùn)練(2)及答案
- 高55班第一次月考總結(jié)班會說課講解
- 專題06完成句子-2025年六年級英語寒假專項提升(譯林版三起)
- 《〈1848年至1850年的法蘭西階級斗爭〉導(dǎo)讀》課件
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 化學(xué)試卷合集(含答案逐題解析)
- 2024年度科研機構(gòu)實驗技術(shù)人員勞務(wù)派遣合作框架
- 2023年中職《計算機網(wǎng)絡(luò)技術(shù)》秋季學(xué)期期末考試試卷(附答案)
- 法治副校長進校園教育
- 北京市石景山區(qū)2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2025版寒假特色作業(yè)
- 江西省吉安市2023-2024學(xué)年高一上學(xué)期1月期末考試政治試題(解析版)
- 國內(nèi)外航空安全形勢
- 零售業(yè)發(fā)展現(xiàn)狀與面臨的挑戰(zhàn)
- 2024年版汽車4S店商用物業(yè)租賃協(xié)議版B版
- 《微觀經(jīng)濟學(xué)》習(xí)題(含選擇題)
評論
0/150
提交評論