




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第四章 匯編語言程序設(shè)計 4-1 匯編語言程序設(shè)計基本概念 4-2 匯編語言程序的基本結(jié)構(gòu)形式,4-1 匯編語言程序設(shè)計基本概念 一、MCS-51指令操作數(shù)說明 1、語句格式 標(biāo)號: 操作碼 操作數(shù)(目的操作數(shù),源操作數(shù)) ;注釋 2、操作數(shù) 對于立即數(shù) #data (1)立即數(shù)188,可表示為 #10111100B、#0BCH、#188 (2)MOV DPTR,# BLOCK;BLOCK為定義過的標(biāo)號地址 對于直接地址 direct (1)二進制、十進制、十六進制數(shù),MOV A,30H (2)定義過的標(biāo)號地址,AGAIN:SJMP AGAIN (3)表達式,如SUM+2,其中SUM為定義過的標(biāo)號地址 (4) SFR寄存器名,如SP、DPH、DPL等,對于偏移量 rel (1)可以是數(shù)值、標(biāo)號地址、表達式 (2)使用特殊符號“”,它代表本條轉(zhuǎn)移指令所在的地址, 如LJMP (死循環(huán)) (3)實際編程時,凡指令中用到地址(rel、 addr11 、addr16等)都可用標(biāo)號地址代替實際地址,而地址的運算有匯編程序完成。 二、常用偽指令 匯編:將計算機不可直接識別的匯編語言源程序翻譯成機器語 言的過程。分為計算機匯編和人工匯編兩種。 匯編程序:具有完成匯編功能的程序。 目標(biāo)程序:匯編語言源程序經(jīng)過匯編得到的機器語言程序。 偽指令:提供匯編用控制信息的指令,只能被匯編程序所識別, 不是單片機的CPU可執(zhí)行的指令。,1、定位偽指令ORG(Origin) 格式: 標(biāo)號: ORG m m:16位二進制數(shù),代表地址。 功能:得到機器語言程序的起始地址。 2、定義字節(jié)偽指令DB(Define Byte) 格式:標(biāo)號: DB X1,X2,Xn Xn:單字節(jié)二進制、十進制、十六進制數(shù),或以 括起來的字符串,數(shù)據(jù)符號。 功能:定義程序存儲器從標(biāo)號開始的連續(xù)單元,用來存放常 數(shù)、字符和表格。 3、定義字偽指令DW(Define Word) 格式:標(biāo)號: DW Y1,Y2,Yn Yn:雙字節(jié)二進制、十進制、十六進制數(shù),或以 括起來的 字符串,數(shù)據(jù)符號。 功能:同DB,不同的是為16位數(shù)據(jù)。,4、匯編結(jié)束命令END 格式:標(biāo)號: END 功能:END是匯編語言源程序的匯編結(jié)束標(biāo)志,在它后面所 寫的指令均不予處理。 5、等值命令EQU 格式:字符名稱 EQU 數(shù)或匯編符號 功能:將一個數(shù)或特定的匯編符號賦予規(guī)定的字符名稱。先 定義后使用。,三、匯編語言程序的結(jié)構(gòu) 1、程序設(shè)計的基本步驟 一般步驟為: (1)分析題意,明確要求; (2)建立思路,確定算法; (3)編制框圖,繪出流程; (4)編寫程序,上機調(diào)試; 程序結(jié)構(gòu)有簡單順序、分支、循環(huán)和子程序等 2、畫流程圖 畫流程圖是指用各種圖形、符號、指向線等來說明程序 設(shè)計的過程。國際通用的圖形和符號說明如下:,橢圓框:起止框,在程序的開始和結(jié)束時使用。 矩形框:處理框,表示要進行的各種操作。 菱形框:判斷框,表示條件判斷,以決定程序的流向。 指向線:流程線,表示程序執(zhí)行的流向。 圓 圈:連接符,表示不同頁之間的流程連接。 各種幾何圖形符號如下圖所示。,4-2 匯編語言程序的基本結(jié)構(gòu)形式 一、簡單程序的設(shè)計 例4-1 已知兩個壓縮BCD碼分別放在內(nèi)部RAM的31H30H和33H 32H等4個單元中,試編程求和,結(jié)果存入R4R3R2中。 分析:流程如圖:,程序如下: ORG 0000H LJMP MAIN ORG 0040H MAIN: MOV A,30H ADD A,32H DA A MOV R2,A MOV A,31H ADDC A,33H DA A MOV R3,A CLR A MOV ACC.0,C MOV R4,A HERE: SJMP HERE END,二、分支程序設(shè)計 1、單分支程序 單分支結(jié)構(gòu)程序使用轉(zhuǎn)移指令實現(xiàn),即根據(jù)條件對程序的執(zhí)行進行判斷,滿足條件是轉(zhuǎn)移執(zhí)行,否則順序執(zhí)行。 在MCS-51指令系統(tǒng)中條件轉(zhuǎn)移指令有: (1)判A轉(zhuǎn)移指令JZ、JNZ; (2)判位轉(zhuǎn)移指令JB、JNB、JBC、JC、JNC; (3)比較轉(zhuǎn)移指令CJNE; (4)減1不為0轉(zhuǎn)移指令DJNZ;,例4-2 假定在外部RAM中有100H、101H和102H共3個連續(xù)單元,其中100H、101H單元中分別存放著兩個8位無符號數(shù),要求找出其中的大數(shù)并存入102H單元。 分析:兩個無符號數(shù)的大小比較可利用兩數(shù)相減是否有借位來判斷,流程圖和程序如下所示:,ORG 0000H LJMP START ORG 0040H START:CLR C MOV DPTR,#100H MOVX A, DPTR MOV R7, A INC DPTR MOVX A, DPTR SUBB A, R7 JC BIG1 MOVX A, DPTR SJMP BIG2 BIG1:XCH A, R7 BIG2:INC DPTR MOVX DPTR,A SJMP ,2、多分支程序 (1)嵌套分支結(jié)構(gòu) 例4-3 設(shè)變量X存放于30H單元,函數(shù)值Y存放31H單元。試按照式: 1 X0 Y= 0 X=0 的要求給Y賦值 -1 X0 分析:X是有符號數(shù),判斷符號位是0還是1可利用JB或JNB指令。 判斷X是否等于0則直接可以使用累加器A的判0指令。 流程、程序如下頁:,ORG 0000H LJMP START ORG 0040H START: MOV A,30H JZ OVER JNB ACC.7,LAB1 MOV A, #0FFH SJMP OVER LAB1: MOV A, #1 OVER: MOV 31H, A SJMP ,(2)多重分支結(jié)構(gòu) 利用MCS-51單片機的散轉(zhuǎn)指令JMP A+DPTR, 可方便地實現(xiàn)多重分支控制,因此,又稱為散轉(zhuǎn)程序。 假定多路分支的最大序號為n,則分支的結(jié)構(gòu)如圖所示。,三、循環(huán)程序設(shè)計 1、循環(huán)程序的結(jié)構(gòu) 循環(huán)程序包括以下四個部分: 置循環(huán)初值 循環(huán)體 循環(huán)控制變量修改 循環(huán)終止控制 常用于循環(huán)控制的指令有: DJNZ、CJNE、JC、JNC 等控制類指令。,2、單循環(huán) 終止循環(huán)控制采用計數(shù)的方法,即用一個寄存器作為循環(huán)次數(shù)計數(shù)器,每次循環(huán)后計數(shù)加1或減1,達到終止值后退出循環(huán)。 例4-4 計算50個8位二進制數(shù)(單字節(jié))之和。 要求:50個數(shù)存放在30H開頭的內(nèi)部RAM中,和放在R6R7中。 分析:采用DJNZ循環(huán)體的流程框圖如下頁所示,在參考程序中,R0為數(shù)據(jù)地址指針,R2為減法循環(huán)計數(shù)器。,START:MOV R6, #0 MOV R7, #0 MOV R2, #50 MOV R0, #30H LOOP:MOV A, R7 ADD A, R0 MOV R7, A CLR A ADDC A, R6 MOV R6, A INC R0 DJNZ R2, LOOP SJMP $,3、多重循環(huán) 如果在一個循環(huán)程序中嵌套了其他的循環(huán)程序,稱為多重循環(huán)程序。在用軟件實現(xiàn)延時時顯得特別有用。 例4-5 設(shè)計1秒延時子程序,假設(shè)fosc=12MHz。 分析:軟件延時與指令的執(zhí)行時間關(guān)系密切,在使用12MHz晶振時,一個機器周期的時間為1us,執(zhí)行一條DJNZ指令的時間為2us,我們可以采用三重循環(huán)的方法寫出延時1秒的子程序 流程、程序如下圖所示:,DELAY:MOV R7, #10; DL3: MOV R6, #200 ; DL2: MOV R5, #250 ; DL1: DJNZ R5, DL1 ; DJNZ R6, DL2 ; DJNZ R7, DL3 ; RET,4、按條件轉(zhuǎn)移控制的循環(huán) 例4-6 把內(nèi)部RAM從地址20H開始存放的數(shù)據(jù)傳送到以地址40H開始的存儲區(qū)中,數(shù)據(jù)塊長度未知,但已知數(shù)據(jù)塊的最后一個字節(jié)內(nèi)容為00H,而其它字節(jié)均不為0。并設(shè)源地址與目的地址空間不重復(fù)。 分析:可以利用判斷每次傳送的內(nèi)容是否為 0 這一條件來控制循環(huán)。也可用CJNE來比較與0是否相等設(shè)計。 利用判A轉(zhuǎn)移控制的循環(huán)流程圖如下圖所示。,START:MOV R0, #20H MOV R1, #40H LOOP:MOV A, R0 JZ ENT MOV R1,A INC R0 INC R1 SJMP LOOP ENT:RET,四、應(yīng)用控制流程設(shè)計 1、控制流程設(shè)計的基本方法 在單片機的控制系統(tǒng)中,為了實現(xiàn)系統(tǒng)的自動控制,必須將控制現(xiàn)場的信息輸入到單片機,經(jīng)過計算機的處理以后以被控對象能夠接受的形式輸出到執(zhí)行機構(gòu),實現(xiàn)對現(xiàn)場的控制。 例4-7 電機的簡單起??刂?;其框圖如下頁圖 a 所示 1)分析:簡單的電機起動停止控制,其控制的示意圖及I/O分配如圖 b 所示。 輸入信號:啟動按鈕SB1、停止按鈕SB2 輸出信號:繼電器KA,假定:按下按鈕,相應(yīng)的接口信號為低電平(P1.1=0)時; 若:程序使 P1.3=1,即KA = 1; 則:電機啟動。,2)按照上述的控制思路,流程圖如下圖所示。,ORG 1000H STR:MOV P1, #00000110B WT1:JB P1.1, WT1 ;啟動? SETB P1.3 ;電機啟動 WT2:JB P1.2, WT2 ;停止? CLR P1.3 ;電機停止 SJMP WT1 END,2、應(yīng)用程序控制流程設(shè)計 例4-8 某機床動力頭,其行程如圖(a)所示,,SQ1、SQ2為左、右行程開關(guān),要求: 1)每次按SB1啟動,工作3個來回后停止,等待下次啟 動 2)每次按SB2按鈕,在完成當(dāng)前進給后,停在初始 位SQ1處,等待下次啟動;,1 硬件原理圖,如圖(b)所示,其中: 輸入信號:啟動按鈕P1.0、停止P1.1、 左右行程開關(guān) P1.2、P1.3; 輸出信號:前進LED燈P1.7、后退 LED燈P1.6。,2 控制流程:如圖(c)。,3)匯編程序 MAIN: MOV R0, #00H MOV P1, #0FH WT1: JB P1.0,WT1 LOOP: SETB P1.7 WT2: JB P1.3,WT2 CLR P1.7 SETB P1.6 INC R0 W
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中式牌樓施工方案(3篇)
- 橋梁水閘拆除方案(3篇)
- 庭院景觀報價方案(3篇)
- 店采購預(yù)算方案(3篇)
- 石材裂縫修護方案(3篇)
- 基礎(chǔ)護理技術(shù)緒論課件
- 基礎(chǔ)護理學(xué)課件
- 消防婚戀教育課件
- 人防工程清潔方案(3篇)
- 柴油運輸車輛安全責(zé)任保險合同
- 兒科學(xué)教學(xué)課件:1.1胃食管反流
- GB/T 2881-2008工業(yè)硅
- GB/T 10760.2-2003離網(wǎng)型風(fēng)力發(fā)電機組用發(fā)電機第2部分:試驗方法
- 需要確認(rèn)的過程特殊過程確認(rèn)記錄
- 中級會計職稱財務(wù)管理基礎(chǔ)第3章主要內(nèi)容增量與零基預(yù)算編制方法
- 邀請函模板完整
- 形式發(fā)票范本
- 《網(wǎng)店運營》學(xué)習(xí)情境四數(shù)據(jù)分析
- 2022年液氨罐區(qū)重大危險源評估報告
- 地基強夯工程專項施工方案專家論證版
- 機房UPS的配電系統(tǒng)施工方案設(shè)計
評論
0/150
提交評論