單片機 第四章_第1頁
單片機 第四章_第2頁
單片機 第四章_第3頁
單片機 第四章_第4頁
單片機 第四章_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第四章匯編語言程序設計

§4-1匯編語言程序設計基本概念§4-2匯編語言程序的基本結構形式§4-1匯編語言程序設計基本概念 一、MCS-51指令操作數說明 1、語句格式[標號:]操作碼[操作數(目的操作數,源操作數)][;注釋]2、操作數對于立即數#data (1)立即數188,可表示為#10111100B、#0BCH、#188 (2)MOVDPTR,#BLOCK;BLOCK為定義過的標號地址對于直接地址direct

(1)二進制、十進制、十六進制數,MOVA,30H (2)定義過的標號地址,AGAIN:SJMPAGAIN (3)表達式,如SUM+2,其中SUM為定義過的標號地址 (4)

SFR寄存器名,如SP、DPH、DPL等對于偏移量rel (1)可以是數值、標號地址、表達式 (2)使用特殊符號“$”,它代表本條轉移指令所在的地址,如LJMP$(死循環) (3)實際編程時,凡指令中用到地址(rel、addr11、addr16等)都可用標號地址代替實際地址,而地址的運算有匯編程序完成。二、常用偽指令匯編:將計算機不可直接識別的匯編語言源程序翻譯成機器語言的過程。分為計算機匯編和人工匯編兩種。匯編程序:具有完成匯編功能的程序。目標程序:匯編語言源程序經過匯編得到的機器語言程序。偽指令:提供匯編用控制信息的指令,只能被匯編程序所識別,不是單片機的CPU可執行的指令。 1、定位偽指令ORG(Origin)格式:[標號:]ORGm m:16位二進制數,代表地址。功能:得到機器語言程序的起始地址。 2、定義字節偽指令DB(DefineByte)格式:[標號:]DBX1,X2,~XnXn:單字節二進制、十進制、十六進制數,或以‘’括起來的字符串,數據符號。 功能:定義程序存儲器從標號開始的連續單元,用來存放常 數、字符和表格。

3、定義字偽指令DW(DefineWord)格式:[標號:]DWY1,Y2,~Yn Yn:雙字節二進制、十進制、十六進制數,或以‘’括起來的 字符串,數據符號。 功能:同DB,不同的是為16位數據。 4、匯編結束命令END 格式:[標號:]END 功能:END是匯編語言源程序的匯編結束標志,在它后面所 寫的指令均不予處理。

5、等值命令EQU 格式:字符名稱EQU數或匯編符號 功能:將一個數或特定的匯編符號賦予規定的字符名稱。先 定義后使用。三、匯編語言程序的結構

1、程序設計的基本步驟 一般步驟為: (1)分析題意,明確要求; (2)建立思路,確定算法; (3)編制框圖,繪出流程; (4)編寫程序,上機調試; 程序結構有簡單順序、分支、循環和子程序等

2、畫流程圖

畫流程圖是指用各種圖形、符號、指向線等來說明程序設計的過程。國際通用的圖形和符號說明如下:

橢圓框:起止框,在程序的開始和結束時使用。 矩形框:處理框,表示要進行的各種操作。

菱形框:判斷框,表示條件判斷,以決定程序的流向。 指向線:流程線,表示程序執行的流向。 圓圈:連接符,表示不同頁之間的流程連接。 各種幾何圖形符號如下圖所示。§4-2匯編語言程序的基本結構形式

一、簡單程序的設計

例4-1已知兩個壓縮BCD碼分別放在內部RAM的31H30H和33H32H等4個單元中,試編程求和,結果存入R4R3R2中。 分析:流程如圖:程序如下: ORG0000H LJMPMAIN ORG 0040HMAIN: 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二、分支程序設計1、單分支程序

單分支結構程序使用轉移指令實現,即根據條件對程序的執行進行判斷,滿足條件是轉移執行,否則順序執行。在MCS-51指令系統中條件轉移指令有: (1)判A轉移指令JZ、JNZ; (2)判位轉移指令JB、JNB、JBC、JC、JNC; (3)比較轉移指令CJNE; (4)減1不為0轉移指令DJNZ;例4-2假定在外部RAM中有ST1、ST2和ST3共3個連續單元,其中ST1、ST2單元中分別存放著兩個8位無符號數,要求找出其中的大數并存入ST3單元。

分析:兩個無符號數的大小比較可利用兩數相減是否有借位來判斷,流程圖和程序如下所示:ORG0000H LJMPSTART ORG 0040HSTART:CLR C MOV DPTR,#ST1 MOVX A, @DPTR MOV R7, A INC DPTR MOVX A, @DPTR SUBB A, R7 JC BIG1 MOVX A, @DPTR SJMP BIG2 BIG1:XCH A, R7BIG2:INC DPTR MOVX @DPTR,A SJMP $2、多分支程序

(1)嵌套分支結構例4-3設變量X存放于30H單元,函數值Y存放31H單元。試按照式: 1 X>0 Y= 0 X=0的要求給Y賦值 -1 X<0

分析:X是有符號數,判斷符號位是0還是1可利用JB或JNB指令。 判斷X是否等于0則直接可以使用累加器A的判0指令。 流程、程序如下頁:

ORG0000H LJMPSTART ORG0040H

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)多重分支結構

利用MCS-51單片機的散轉指令JMP@A+DPTR,可方便地實現多重分支控制,因此,又稱為散轉程序。假定多路分支的最大序號為n,則分支的結構如圖所示。

三、循環程序設計1、循環程序的結構循環程序包括以下四個部分: 置循環初值 循環體 循環控制變量修改 循環終止控制常用于循環控制的指令有:DJNZ、CJNE、JC、JNC等控制類指令。2、單循環 終止循環控制采用計數的方法,即用一個寄存器作為循環次數計數器,每次循環后計數加1或減1,達到終止值后退出循環。例4-4計算50個8位二進制數(單字節)之和。要求:50個數存放在30H開頭的內部RAM中,和放在R6R7中。分析:采用DJNZ循環體的流程框圖如下頁所示,在參考程序中,R0為數據地址指針,R2為減法循環計數器。START:MOV R6, #0 MOV R7, #0 MOV R2, #50 MOV R0, #30HLOOP:MOV A, R7 ADD A, @R0 MOV R7, A CLR A ADDC A, R6 MOV R6, A INC R0 DJNZ R2, LOOP SJMP $

3、多重循環

溫馨提示

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

評論

0/150

提交評論