




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、4.1匯編語言程序設(shè)計概述(1)匯編語言的特點 助記符指令和機器指令一一對應(yīng),所以用匯編語言編寫的程序效率高,占用存儲空間小,運行速度快,因此匯編語言能編寫出最優(yōu)化的程序。 使用匯編語言編程比使用高級語言困難,因為匯編語言是面向計算機的,匯編語言的程序設(shè)計人員必須對計算機硬件有相當(dāng)深入的了解。 匯編語言能直接訪問存儲器及接口電路,也能處理中斷,因此匯編語言程序能夠直接管理和控制硬件設(shè)備。 匯編語言缺乏通用性,程序不易移植,各種計算機都有自己的匯編語言,不同計算機的匯編語言之間不能通用;但是掌握了一種計算機系統(tǒng)的匯編語言后,學(xué)習(xí)其他的匯編語言就不太困難了。(2)匯編語言的語句格式:;(3)匯編語
2、言程序設(shè)計的步驟 建立數(shù)學(xué)模型。 確定算法。 制定程序流程圖。 確定數(shù)據(jù)結(jié)構(gòu)。 寫出源程序。 上機調(diào)試程序。4.2偽指令偽指令是程序員發(fā)給匯編程序的命令,也稱為匯編命令或匯編程序控制指令。Cygnal常見匯編語言程序中常用的偽指令如下。(1)ORG (ORiGin)匯編起始地址命令 在匯編語言源程序的開始,通常都用一條ORG偽指令來實現(xiàn)規(guī)定程序的起始地址。在十字路口交通燈控制中,用ORG 0000H來開始程序。(2)END (END of assembly) 匯編終止命令 匯編語言源程序的結(jié)束標(biāo)志,用于終止源程序的匯編工作。在整個源程序中只能有一條END命令,且位于程序的最后。在十字路口交通燈
3、控制中,用END來結(jié)束的程序。(3)EQU (EQUate) 賦值命令 (4)DB (Define Byte) 定義字節(jié)命令 (5)DW (Define Word) 定義數(shù)據(jù)字命令 (6)DS (Define Stonage ) 定義存儲區(qū)命令 (7)BIT位定義命令 (8)DATA數(shù)據(jù)地址賦值命令 4.3單片機匯編語言程序的基本結(jié)構(gòu)形式(1)順序程序【例4-1】三字節(jié)無符號數(shù)相加,其中被加數(shù)在內(nèi)部RAM的50H、51H和52H單元中,加數(shù)在內(nèi)部RAM的53H、5414和55H單元中,要求把相加之和存放在50H、51H和52H單元中,進(jìn)位存放在位尋址區(qū)的00H位中。 其中: 在十字路口交通燈控
4、制中,用到MOVR0,#0FFH,MOVA,#01H等。【例4-2】從50個字節(jié)的無序表中查找一個關(guān)鍵字“40H”。(2)分支程序 單分支程序【例4-3】變量X存放在VAR單元內(nèi),函數(shù)值Y存放在FUNC單元中,試按下式的要求給Y賦值:Y= 本題的程序流程見圖4-1(a)。參考程序: 圖4-1例4-3的分支流程圖這個程序的特征是先比較判斷,然后按比較結(jié)果賦值,這實際是三分支歸一的流程圖,因此,至少要用兩個轉(zhuǎn)移指令。初學(xué)者很容易犯的一個錯誤是:漏掉了其中的SJMP DONE語句,因為流程圖中沒有明顯的轉(zhuǎn)移痕跡。這個程序也可以按圖4-1(b)的流程圖來編寫,其特征是先賦值,后比較判斷,然后修改賦值并
5、結(jié)束。參考程序: 多分支程序參見圖4-2。(3)循環(huán)程序循環(huán)程序一般由4部分組成:圖4-2多分支程序轉(zhuǎn)移 置循環(huán)初值,即確立循環(huán)開始時的狀態(tài); 循環(huán)體(工作部分),要求重復(fù)執(zhí)行的部分; 循環(huán)修改,循環(huán)程序必須在一定條件下結(jié)束,否則就要變成死循環(huán); 循環(huán)控制部分,根據(jù)循環(huán)結(jié)束條件,判斷是否結(jié)束循環(huán)。以上4個部分可以有兩種組織方式?!纠?-4】從BLOCK單元開始存放一組無符號數(shù),一般稱為一個數(shù)據(jù)塊。數(shù)據(jù)塊長度放在LEN單元,編寫一個求和程序,將和存入SUM單元,假設(shè)和為不超過8位二進(jìn)制數(shù)。在置初值時,將數(shù)據(jù)塊長度置入一個工作寄存器,將數(shù)據(jù)塊首地址送入另一個工作寄存器,一般稱它為數(shù)據(jù)塊地址指針。每
6、做一次加法之后,修改地址指針,以便取出下一個數(shù)來相加,并且使計數(shù)器減1。到計數(shù)器減到0時,求和結(jié)束,把和存入SUM即可。 參考程序(各單元的地址是任意的):以上程序在計數(shù)器初值不為零時是沒有問題的,但若是數(shù)據(jù)塊的長度有可能為零,則將出現(xiàn)問題。當(dāng)R2初值為零,減1之后將為FFH,故要做256次加法之后才會停止,顯然和題意不符。若考慮到這種情況,則可按下面的方式來編寫程序,在做加法之前,先判斷一次R2的初值是否為零。整個程序仍基本套用原來的形式。其中: CLRbit;清“0”bit位。在十字路口交通燈控制中,用到CLR P2.4來熄滅燈。 將源操作數(shù)(Rn或direct)減1,結(jié)果回送到Rn寄存器
7、或direct中去。如果結(jié)果不為0,則轉(zhuǎn)移到標(biāo)號為rel的子程序中去。允許程序員把寄存器Rn或內(nèi)部RAM的direct單元用作程序循環(huán)計數(shù)器。主要用于控制程序循環(huán)。以減1后是否為“0”作為轉(zhuǎn)移條件,即可實現(xiàn)按次數(shù)控制循環(huán)。最常見的多重循環(huán)是由DJNZ指令構(gòu)成的軟件延時程序,它是常用的程序之一。例如:50ms延時程序。延時程序與Cygnal指令執(zhí)行時間有很大的關(guān)系。在使用12MHz晶振時,一個機器周期為1s,執(zhí)行一條DJNZ指令的時間為2/3,用雙重循環(huán)方法寫出下面的延時50ms的程序:以上延時程序不太精確,它沒有考慮到除“DJNZR6,DEL2”指令外的其他指令的執(zhí)行時間。如把其他指令的執(zhí)行時
8、間計算在內(nèi),它的延時時間為:(250+1+2)200+1=50.301ms如果要求比較精確的延時,可按如下修改:實際延遲時間為50.001ms。注意 軟件延時程序不允許有中斷,否則將嚴(yán)重影響定時的準(zhǔn)確性。在十字路口交通燈控制中用DjnzR7,loop9DjnzR6,loop8Djnz R5,loop7來實現(xiàn)延時。(4) 子程序的設(shè)計 子程序設(shè)計原則子程序是一種能完成某一特定任務(wù)的程序段,其資源要為所有調(diào)用程序共享。因此,子程序在結(jié)構(gòu)上應(yīng)具有獨立性和通用性。在編寫子程序時應(yīng)注意以下問題。子程序的第一條指令的地址稱為子程序的入口地址,該指令前必須有標(biāo)號。主程序調(diào)用子程序有兩條:絕對調(diào)用指令A(yù)CAL
9、L addr11長調(diào)用指令LCALL addr16注意設(shè)置堆棧指針和現(xiàn)場保護。最后一條指令必須是RET指令。子程序可以嵌套,即子程序可以調(diào)用子程序。在子程序調(diào)用時,要注意參數(shù)傳遞的問題。 子程序的基本結(jié)構(gòu) 4.4Cygnal單片機匯編語言程序設(shè)計舉例(1)算術(shù)運算程序【例4-5】假定R2、R3和R4、R5分別存放兩個16位的帶符號二進(jìn)制數(shù),其中R2和R4的最高位為兩數(shù)的符號位。請編寫帶符號雙字節(jié)二進(jìn)制數(shù)的加減法運算程序,以BSUB為減法程序入口,以BADD為加法程序入口,以R6、R7保存運算結(jié)果。參考程序:(2)數(shù)制轉(zhuǎn)換程序【例4-6】在內(nèi)部RAM的hex單元中存有兩位十六進(jìn)制數(shù),試將其轉(zhuǎn)換為
10、ASCII碼,并存放于asc和asc+1兩個單元中。主程序(MAIN):子程序(HASC):其中,RET為子程序的返回指令在十字路口交通燈控制中用RET來實現(xiàn)子程序的返回。(3)定時程序有多個定時需要,可以先設(shè)計一個基本的延時程序,使其延遲時間為各定時時間的最大公約數(shù),然后就以此基本程序作為子程序,通過調(diào)用的方法實現(xiàn)所需要的不同定時。例如要求的定時時間分別為5s 、10s和20s并設(shè)計一個1s延時子程序DELAY,則不同定時的調(diào)用情況表示如下:其中:長調(diào)用指令LCALL addr16在十字路口交通燈控制中用Lcalldelay1來調(diào)用延時。(4)查表程序假定有44鍵盤,鍵掃描后把被按鍵的鍵碼放在累加器A中,鍵碼與處理子程序入口地址的對應(yīng)關(guān)系為:并假定處理子程序在ROM 64KB的范圍內(nèi)分布。要求
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通信線路建設(shè)合同
- 冷庫物流及熟食加工項目可行性研究報告寫作模板-備案審批
- 國際物流試題及答案
- 電工基礎(chǔ)考試題+答案
- 采購原材料合同范本
- 公共設(shè)施裝修改造工程合同
- 商鋪租賃合同協(xié)議書范本
- 度全國鋼材供應(yīng)合同
- 自我血糖監(jiān)測操作
- 旅游規(guī)劃怎么做
- 《射雕英雄傳》好書讀后感
- DB51T 2049-2015 建筑消防設(shè)施檢測規(guī)范
- 【MOOC】風(fēng)景背后的地貌學(xué)-華中師范大學(xué) 中國大學(xué)慕課MOOC答案
- 護理感動案例
- 2024版《安全生產(chǎn)法》考試題庫附答案(共90題)
- 企業(yè)天然氣轉(zhuǎn)讓協(xié)議書范文范本
- 帶式運輸機傳動裝置的設(shè)計
- 玩具照相機細(xì)分市場深度研究報告
- 人工智能算法與實踐-第16章 LSTM神經(jīng)網(wǎng)絡(luò)
- 中考監(jiān)考和考務(wù)人員培訓(xùn)手冊
- 數(shù)學(xué)史簡介課件可編輯全文
評論
0/150
提交評論