單元四 匯編語言程序設計_第1頁
單元四 匯編語言程序設計_第2頁
單元四 匯編語言程序設計_第3頁
單元四 匯編語言程序設計_第4頁
單元四 匯編語言程序設計_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、單元四 匯編語言程序設計4.1 任務七單片機計數(shù)4.2 任務八LED顯示電路返回主目錄4.1 任務七 單片機計數(shù) 學習目標:通過學習任務七的完成方法,掌握MCS-51單片機匯編語言中的偽指令的功能特點。 任務描述:利用實驗開發(fā)板上的555振蕩電路產(chǎn)生的4HZ的脈沖信號進行計數(shù),要求每計十個數(shù)單燈向左移動一次。4.1.1 硬件電路ORG0000HLJMPMAINORG0030HMAIN:MOVTMOD,#06HMOVTH0,#0F6HMOVTL0,#0F6HSETBTR0MOVA,#0FEHLOOP:MOVP1,AJBCTF0,MLOOPSJMPLOOPMLOOP:RL ASJMPLOOPEND

2、 4.1.2 程序設計硬件演示:用“偉?!蹦M仿真軟件進行程序的編輯、編譯。 打開“ISP下載軟件”將目標文件下載到ISP-4實驗 開發(fā)板上的AT89S51單片機芯片,觀察程序運行 結果。提出問題:1、ORG END這樣指令有什么意義? 2、什么是偽指令?有哪些常用偽指令?4.1.3 源程序編輯、編譯、下載什么是偽指令偽指令又稱匯編程序控制譯碼指令,屬說明性匯編指令。偽”字體現(xiàn)在匯編時不產(chǎn)生機器指令代碼,不影響程序的執(zhí)行,僅產(chǎn)生供匯編時用的某些命令,在匯編時執(zhí)行某些特殊操作。如EDN表示編譯到此結束。 4.1.4 相關知識-偽指令(1 )定位偽指令ORG格式:標號: ORG 地址表達式功能:規(guī)

3、定程序塊或數(shù)據(jù)塊存放的起始位置。 例如:ORG 1000H;MOV A,#20H表示下面指令MOV A,#20H存放于1000H開始的單元(2)定義字節(jié)數(shù)據(jù)偽指令DB格式:標號: DB 字節(jié)數(shù)據(jù)表功能:字節(jié)數(shù)據(jù)表可以是多個字節(jié)數(shù)據(jù)、字符串或表達式,它表示將字節(jié)數(shù)據(jù)表中的數(shù)據(jù)從左到右依次存放在指定地址單元。2.常用偽指令例如:ORG 1000H TAB: DB 2BH, 0A0H, A, 2*4 ;表示從1000H單元開始的地方存放數(shù)據(jù)2BH,0A0H,41H(字母A的ASCII碼),08H (3) 定義字數(shù)據(jù)偽指令DW格式:標號: DW 字數(shù)據(jù)表功能:與DB類似,但DW定義的數(shù)據(jù)項為字,包括兩

4、個字節(jié),存放時高位在前,低位在后。例如:ORG 1000H DATA: DW 324AH, 3CH ;表示從1000H單元開始的地方存放數(shù)據(jù)32H,4AH,00H ; 3CH(3CH以字的形式表示為003CH) (4)定義空間偽指令DS格式:標號: DS 表達式功能:從指定的地址開始,保留多少個存儲單元作為備用的空間。例如: ORG 1000H BUF: DS 50 ; TAB: DB 22H ;22H存放在1032H單元。表示從1000H開始的地方預留50(1000H1031H)個存儲字節(jié)空間。 (5) 符號定義偽指令EQU或“=”格式:符號名 EQU 表達式 或 符號名=表達式功能:將表達

5、式的值或某個特定匯編符號定義為一個指定的符號名,只能定義單字節(jié)數(shù)據(jù),并且必須遵循先定義后使用的原則,因此該語句通常放在源程序的開頭部分。例如:LEN=10SUM EQU 21HMOV A,#LEN;執(zhí)行指令后,累加器A中的值為0AH (6)數(shù)據(jù)賦值偽指令DATA格式:符號名 DATA 表達式功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,只能定義單字節(jié)數(shù)據(jù),但可以先使用后定義,因此用它定義數(shù)據(jù)可以放在程序末尾進行數(shù)據(jù)定義。例如: MOV A,#LEN LEN DATA 10盡管LEN的引用在定義之前,但匯編語言系統(tǒng)仍可以知道A的值是0AH。 7. 數(shù)據(jù)地址賦值偽指令XDATA格式:

6、符號名 XDATA 表達式功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,可以先使用后定義,并且用于雙字節(jié)數(shù)據(jù)定義。例如:DELAY XDATA 0356H LCALL DELAY ;執(zhí)行指令后,程序轉到0356H單元執(zhí)行 8. 匯編結束偽指令END格式:標號: END 功能:匯編語言源程序結束標志,用于整個匯編語言程序的末尾處。小結:1.偽指令在程序中的作用是什么?2.單片機匯編語言程序中常用的有哪些偽指令?思考與練習:4.2 4.34.2 任務八 LED顯示電路 學習目標:通過學習任務八的完成方法,掌握單片機匯編語言程序設計的結構化設計方法,如分支結構、循環(huán)結構、子程序結構、查

7、表程序結構等。 任務描述:將09這十個數(shù)循環(huán)送P1口七段LED上顯示 。4.2.1 硬件電路START: ORG 0100H MAIN: MOV R0,#00H MOV DPTR,#TABLE DISP: MOVA,R0 MOVCA,A+ADPTR MOVP1,A ACALLDELAY INCR0 CJNER0,#0AH,DISP AJMPMAINDELAY: MOVR1,#0FFH LOOP0: MOVR2,#0FFHLOOP1: DJNZR2,LOOP1DJNZR1,LOOP0RETTABLE:DB0C0H,0F9H, DB0A4H,0B0H DB99H,92H DB82H,0F8H DB

8、80H,90H END 4.2.2 程序設計4.2.3 源程序編輯、編譯、下載硬件演示:用“偉?!蹦M仿真軟件進行程序的編輯、編譯。 打開“ISP下載軟件”將目標文件下載到ISP-4實驗 開發(fā)板上的AT89S51單片機芯片,觀察程序運行 結果。提出問題: 單片機源程序有哪些常用結構形式? 一個應用系統(tǒng)的匯編語言源程序,無論其系統(tǒng)功能的要求簡單還是復雜,其程序結構的組成基礎總是由簡單程序、分支程序、循環(huán)程序、子程序、查表程序等結構化程序塊組合而成。P2入口出口P1P3(a) 順序結構過程A過程B是否入口出口條件滿足?(b) 分支結構過程是否入口出口條件滿足?(c) 循環(huán)結構4.2.4 相關知識-

9、MCS-51基礎程序設計1. 單片機基本程序結構2. 分支程序結構條件成立?NY(1)單分支程序結構 只有一個入口 兩個出口 條件中只有兩種可能性出現(xiàn) 條件一般由運算或檢測的狀態(tài)標志提供 通常使用條件判斷指令實現(xiàn)單分支結構程序的典型形式NY開始程序段1條件成立?程序段(2)結束分支程序(2)分支程序(1)NY開始程序段1條件成立?程序段(2)結束程序段(3)(A)=nS0S1Sn(2)多分支程序結構 只有一個入口 多個出口 條件有多種可能性出現(xiàn) 通常使用散轉指令實現(xiàn) JMP A+DPTR采用轉移指令表的散轉程序例: 編出要求根據(jù)R的內(nèi)容轉向各個操作程序的程序。即當(R)=0,轉向OPR0(R)

10、=1,轉向OPRl(R)=n,轉向OPRn解:程序清單如下:MOV A,RRL A ;分支序號值乘2MOV DPTR ,#BRTABL ;轉移指令表首址JMP A+DPTR ;轉向形成的散轉地址BRTABL:AJMP OPR0 ;轉移指令表AJMP OPR1AJMP OPRn散轉程序舉例3. 循環(huán)程序結構(1)循環(huán)結構程序的基本組成(2)循環(huán)結構程序舉例兩條轉移指令:DJNZ Rn,rel ;以工作寄存器Rn為控制寄存器DJNZ direct,rel ;以直接尋址單元作控制寄存器控制計數(shù)器方式:一般采用減1計數(shù)(遞減方式)。 (3)多重循環(huán)結構程序應用情況:復雜問題或是循環(huán)數(shù)超出256。多重循

11、環(huán)結構:即循環(huán)中包含循環(huán)程序或一個大循環(huán)中包含多個小循環(huán)程序,也稱循環(huán)嵌套。循環(huán)重數(shù)不限,但不能交叉。例如:雙重軟件延時START:MOV R3,#DATA1 ;外層循環(huán)計數(shù)初值LOOP1:MOV R2,#DATA2 ;內(nèi)層循環(huán)計數(shù)初值LOOP2:NOPNOPNOPDJNZ R2,LOOP2 ;(R2)-10,轉LOOP2DJNZ R3,LOOP1 ;(R3)-10,轉LOOP1END ;結束4. 子程序結構(1)子程序的結構 子程序的結構A、必須標明子程序的入口地址,又稱首地址,以便在主程序調(diào)用;B、必須以返回指令RET結束子程序。 參數(shù)傳遞A、傳遞數(shù)據(jù) B、傳遞地址。 主程序的現(xiàn)場保護和恢

12、復A、調(diào)用前保護、返回后恢復。B、調(diào)用后保護、返回前恢復。 主程序PUSH PSW ;將PSW、A、DPTR等入棧保護PUSH ACCPUSH BPUSH DPL PUSH DPH PUSH PSW,#10H ;選用工作寄存器組2,將0組保護LCALL addr16 ;調(diào)用子程序addr16POP DPH ;出棧POP DPLPOP BPOP ACCPOP PSWA、調(diào)用前保護、返回后恢復ADDR:PUSH PSW ;子程序現(xiàn)場保護 PUSH ACC PUSH B PUSH DPL PUSH DPH MOV PSW,#08H ;選用工作寄存器組1,0組保護 ;子程序主體 POP DPH ;現(xiàn)場

13、恢復POP DPL POP BPOP ACCPOP PSWRET ;返回B、調(diào)用后保護、返回前恢復4. 子程序結構(2)子程序的特性 通用性浮動性 可遞歸性 子程序的說明文件 子程序名:標明子程序功能的名稱。 子程序功能:簡要說明子程序能完成的主要功能,包括重要算法、參量要求及有關存儲單元配置等。 子程序調(diào)用:指明本子程序還需調(diào)用哪些子程程序流程圖及程序清單。5. 查表程序結構 查表指令MOVC A,A+DPTRMOVC A,A+PC DPTR作為基地址查表A、將待查表格的首地址置入DPTR基址寄存器;B、將待查的表格具體項數(shù)值置入變址寄存器A中;C、執(zhí)行指令 PC作為基地址查表A、表格不能放

14、在查表指令的下一條。B、表格下移若干字節(jié)。C、A賦初值時使用ADD A,#DATA; #DATA為表格與查表指令之間的地址差。使用MOVC A,A+DPTR指令來查表,程序清單如下:MOV DPTR,#JZ ;子程序入口地址表首址RL A ;鍵碼值乘以 MOV R2,A ;暫存MOVC A,A+DPTR ;取得入口地址低位PUSH A ;進棧暫存INC AMOVC A,A+DPTR ;取得入口地址高位MOV DPH,APOP DPLCLR AJMP A+DPTR ;轉向鍵處理子程序JZ: DB RK0L ;處理子程序入口地址表 DB RK0H DB RK1L DB RK1H DB RK2L DB RK2H 查表程序舉例6. 單片機源程序的基本格式單片機應用系統(tǒng)源程序的基本格式及其部分地址分配示例:ORG 0000HLJMP START ;轉向主程序ORG 0003HLJMP INTE0 ;轉向外中斷0服務子程序ORG 000BHLJMP INTTFO ;轉向定時/計數(shù)器0服務子程序 ;可按實際需要設置服務子程序ORG 0030HSTART:MOV A,#00H ;主程序從0030H單元開始MOV R1,#dataMOV R0,#00HDJNZ R1,LOOP0 ;初始化程序段 ;主程序主體區(qū)段ORG 3100HA0: ;子程序A0RETA1 ;子程序A1RE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論