匯編語言程序設計知識wt課件_第1頁
匯編語言程序設計知識wt課件_第2頁
匯編語言程序設計知識wt課件_第3頁
匯編語言程序設計知識wt課件_第4頁
匯編語言程序設計知識wt課件_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄 第一章 微機基礎知識 第二章 89C51單片機的結構和原理 第三章 89C51指令系統(tǒng) 第四章 匯編語言程序設計知識 第五章 中斷系統(tǒng) 第六章 定時器及應用 第七章 89C51串行口及通信技術 第八章 單片機小系統(tǒng)片外擴展 第九章 應用系統(tǒng)配置及接口技術 附錄A 89C51指令系統(tǒng)表 參考資料第1頁,共54頁。4.1 編程的步驟、方法和技巧4.2 匯編語言源程序的編輯和匯編第四章匯編語言程序設計知識第2頁,共54頁。4.1.1 編程的步驟4.1.2 編程的方法和技巧4.1.3 匯編語言程序的基本結構4.1 編程的步驟、方法和技巧第3頁,共54頁。1、分析問題2、確定算法3、畫程序流程圖4

2、、編寫程序4.1.1 編程的步驟第4頁,共54頁。1、分析問題 對需要解決的問題進行分析,以求對問題有正確的理解。 解決問題的任務是什么? 工作過程? 現(xiàn)有的條件,已知數(shù)據(jù),對運算的精度和速 度方面的要求? 設計的硬件結構是否方便編程?4.1.1 編程的步驟第5頁,共54頁。2、確定算法 算法是如何將實際問題轉化成程序模塊來處理。 在編程以前,先要對幾種不同的算法進行分 析、比較,找出最適宜的算法。4.1.1 編程的步驟第6頁,共54頁。 程序流程圖是使用各種圖形、符號、有向線段等來說明程序 設計過程的一種直觀的表示。 畫流程圖是程序結構設計是采用的一種重要手段。 流程圖步驟分得越細致,編寫程

3、序是也越方便。 一個系統(tǒng)軟件有總的流程圖(主程序框圖)和局部的流程圖。 流程圖常采用的圖形和符號。3、畫程序流程圖4.1.1 編程的步驟第7頁,共54頁。橢圓框或桶形框:表示程序的開始或結束。矩形框:表示要進行的工作。菱形框:表示要判斷的事情,菱形框內(nèi)的 表達式表示要判斷的內(nèi)容。圓圈:表示連接點指向線:表示程序的流向流程圖常采用的圖形和符號第8頁,共54頁。開始將學生成績存入累加器A中比較(A)與#60的大小(A)=#60?增加R1的值打印學生成績(A)#60?增加R2的值結束YESYESNONO第9頁,共54頁。4、編寫程序用89C51匯編語言編寫的源程序行(一條語句)包括四個部分,也叫四個

4、字段: 標號:操作碼操作數(shù);注釋每個字段之間要用分隔符分隔,而每個字段內(nèi)部不能使用分隔符??梢杂米鞣指舴姆枺嚎崭瘛?”、冒號“:”、逗號“,”、分號“;”等。 例:LOOP:MOV A,#00H ;立即數(shù)00HA4.1.1 編程的步驟第10頁,共54頁。標號:操作碼操作數(shù);注釋出現(xiàn)在助記符之前的,是由用戶定義的一個字符串。一條指令的標號是該條指令的符號名字,標號的值是匯編這條指令時指令的地址,代表16位長的ROM地址編碼。標號可以由賦值偽指令賦值,如果沒有賦值,匯編程序把存放該指令目標碼第一字節(jié)的存儲單元的地址賦給該標號,所以,標號又叫指令標號。并不是每一條語句都需要標號,只有那些欲被引用

5、的語句才需要。(1)標號4、編寫程序4.1.1 編程的步驟第11頁,共54頁。標號:操作碼操作數(shù);注釋對于標號的限定: 最多可由31個字符構成,字符可以是英文字母(一般不區(qū) 分大小寫)、阿拉伯數(shù)字和其他字符(“?”和“_”); 第一字符必須是非數(shù)字; 后面跟冒號“:”; 一個標號在程序中只能定義一次; 標號不能為指令助記符、偽指令、SFR名稱等系統(tǒng)保留字。(1)標號4、編寫程序4.1.1 編程的步驟第12頁,共54頁。標號:操作碼操作數(shù);注釋(2)操作碼操作碼是必不可少的。它用一組字母符號表示指令的操作碼。在89C51中,由指令助記符組成。一般留出標號字段的空位,以便與標號相區(qū)別。4、編寫程序

6、4.1.1 編程的步驟第13頁,共54頁。(3)操作數(shù)匯編語言指令可能要求或不要求操作數(shù),所以這一字段可能有也可能沒有。若有兩個操作數(shù),操作數(shù)之間用逗號“,”分開。操作數(shù)字段的內(nèi)容復雜多樣,可能包括:標號:操作碼操作數(shù);注釋4、編寫程序4.1.1 編程的步驟第14頁,共54頁。 工作寄存器:由RS0和RS1規(guī)定的當前工作寄存器區(qū)中的R0R7。 特殊功能寄存器:21個特殊功能寄存器SFR的名字。 標號名: 賦值標號 由匯編指令EQU等賦值的標號; 指令標號 指令標號指示的指令的第一字節(jié)地址是該標號的值。 $:用來表示程序計數(shù)器的當前值。(3)操作數(shù) 符號第15頁,共54頁。 可為二進制(B)、八

7、進制(O)、十進制(D)、十六進制(H) 或字符串。(3)操作數(shù) 數(shù)值 匯編時,計算出表達式的值填入目標碼。 一般缺省情況下,匯編器默認的數(shù)值是十進制數(shù)值; 若常數(shù)以字符AF開頭,必須在其前面加“0”作為引導,以便 與標號或符號名相區(qū)別。 表達式4.1.1 編程的步驟第16頁,共54頁。4.1 編程的步驟4、編寫程序標號:操作碼操作數(shù);注釋(4)注釋注釋部分不是匯編語言的功能部分,只是用語增加程序的可讀性。良好的注釋是匯編語言程序編寫中的重要組成部分。由“;”或“/*/”表示。5、上機調(diào)試第17頁,共54頁。4.1.2 編程的方法和技巧1、模塊化的程序設計方法2、編程技巧第18頁,共54頁。1

8、、模塊化的程序設計方法單個模塊結構的程序功能單一,易于編寫、調(diào)試和修改。便于分工,從而可使多個程序員同時進行程序的編寫和調(diào)試工作,加快軟件研制進度。程序可讀性好,便于功能擴充和版本升級。對程序的修改可局部進行,其它部分可以保持不變。對于使用頻繁的子程序可建立子程序庫,便于多個模塊調(diào)用。(1)程序功能模塊化的優(yōu)點4.1.2 編程的方法和技巧第19頁,共54頁。1、模塊化的程序設計方法每個模塊應具有獨立的功能,能產(chǎn)生一個明確的結果,即單模塊的功能高內(nèi)聚性。模塊之間的控制耦合應盡量簡單,數(shù)據(jù)耦合應盡量少,即模塊間的低耦合性??刂岂詈鲜侵改K進入和退出的條件及方式,數(shù)據(jù)耦合是指模塊間的信息交換方式、交

9、換量的多少及交換頻繁程度。模塊長度適中。20條100條的范圍較合適。(2)劃分模塊的原則4.1.2 編程的方法和技巧第20頁,共54頁。2、編程技巧盡量采用循環(huán)結構和子程序。盡量少用無條件轉移指令。對于通用的子程序,考慮到其通用性,除了用于存放子程序入口參數(shù)的寄存器外,子程序中用到的其他寄存器的內(nèi)容應壓入堆棧(返回前再彈出),即保護現(xiàn)場。在中斷處理程序中,除了要保護處理程序中用到的寄存器外,還要保護標志寄存器。用累加器傳遞入口參數(shù)或返回參數(shù)比較方便,在子程序中,一般不必把累加器內(nèi)容壓入堆棧。4.1.2 編程的方法和技巧第21頁,共54頁。4.1.2 編程的方法和技巧1、模塊化的程序設計方法2、

10、編程技巧第22頁,共54頁。4.1.3 匯編語言程序的基本結構 1、順序程序 2、分支程序 3、循環(huán)程序第23頁,共54頁。1、順序程序順序程序是最簡單的程序結構,也稱直線程序。程序按順序一條一條地執(zhí)行指令。這類程序是所有復雜程序的基礎。要寫出高質(zhì)量的程序還是需要掌握一定的技巧,需要熟悉指令系統(tǒng),正確地選擇指令,最大限度地優(yōu)化程序。4.1.3 匯編語言程序的基本結構第24頁,共54頁。2、分支程序程序分支是通過條件轉移指令實現(xiàn)的,即根據(jù)條件對程序的執(zhí)行進行判斷、滿足條件則進行程序轉移,不滿足條件就順序執(zhí)行程序。分支程序又分為單分支和多分支結構。多分支程序是首先把分支程序按序號排列,然后按序號值

11、進行轉移。4.1.3 匯編語言程序的基本結構第25頁,共54頁。在MCS-51指令系統(tǒng)中,通過條件判斷實現(xiàn)單分支程序轉移的指令有:JZ、JNZ、CJNE、DJNZ等。此外還有以位狀態(tài)作為條件進行程序分支的指令,如JC、JNC、JB、JNB、JBC等。使用這些指令可以完成0、1、正、負,以及相等、不相等作為各種條件判斷依據(jù)的程序轉移。散轉指令轉向0分支轉向1分支轉向n-1分支轉向n分支K=0K=1K=n-1K=n4.1.3 匯編語言程序的基本結構第26頁,共54頁。JMP_128:MOV A,R3 RL A MOV DPTR,#JMPTAB JMP A+DPTRJMPTAB:AJMP ROUT0

12、0 AJMP ROUT01 AJMP ROUT7F例: 128種分支轉移程序。 功能:根據(jù)入口條件轉移到128個目的地址。 入口:(R3)=轉移目的地址的序號00H7FH。 出口:轉移到相應子程序入口。128個子程序首址;A循環(huán)左移一位,相當于2第27頁,共54頁。說明:此程序要求128個轉移目的地址(ROUT00 ROUT7FH)必須駐留在與絕對轉移指令AJMP相同的一個2KB存儲區(qū)內(nèi)。RL指令對變址部分乘以2,因為每條AJMP指令占兩個字節(jié)。第28頁,共54頁。3、循環(huán)程序在程序運行時,有時需要連續(xù)重復執(zhí)行某段程序,可以使用循環(huán)程序。其結構包括四部分: 置循環(huán)初值 循環(huán)體(循環(huán)工作部分)

13、修改控制變量 循環(huán)控制部分其組織方式如圖4-2所示。4.1.3 匯編語言程序的基本結構第29頁,共54頁。置初值循環(huán)體循環(huán)修改循環(huán)控制?退出循環(huán)NY(a)組織方式1置初值循環(huán)體循環(huán)修改循環(huán)控制?退出循環(huán)NY(b)組織方式2圖4-2 循環(huán)組織方式流程圖第30頁,共54頁。(1)置循環(huán)初值3、循環(huán)程序對于循環(huán)程序中所使用的工作單元,在循環(huán)開始時應置初值。 例如,工作寄存器設置計數(shù)初值,累加器 A清0,以及設置地址指針、長度等。4.1.3 匯編語言程序的基本結構第31頁,共54頁。(2)循環(huán)體(循環(huán)工作部分)3、循環(huán)程序重復執(zhí)行的程序段部分,分為循環(huán)工作部分和循環(huán)控制部分。 循環(huán)控制部分每循環(huán)一次,

14、檢查結束條件, 當滿足條件時,就停止循環(huán),往下繼續(xù)執(zhí)行 其他程序。4.1.3 匯編語言程序的基本結構第32頁,共54頁。(3)修改控制變量3、循環(huán)程序在循環(huán)程序中,必須給出循環(huán)結束條件。常見的是計數(shù)循環(huán),當循環(huán)了一定的次數(shù)后,就停止循環(huán)。在單片機中,一般用一個工作寄存器Rn作為計數(shù)器,對該計數(shù)器賦初值作為循環(huán)次數(shù)。每循環(huán)一次,計數(shù)器的值減1,即修改循環(huán)控制變量,當計數(shù)器的置件為0時,就停止循環(huán)。4.1.3 匯編語言程序的基本結構第33頁,共54頁。(4)循環(huán)控制部分3、循環(huán)程序根據(jù)循環(huán)結束條件,判斷是否結束循環(huán)。 89C51可采用DJNZ指令來自動修改控制變 量并能結束循環(huán)。4.1.3 匯編語

15、言程序的基本結構第34頁,共54頁。若循環(huán)程序的循環(huán)體中不再包含循環(huán)程序,即為單重循環(huán)程序。如果在循環(huán)體中還包含循環(huán)程序,那么這種現(xiàn)象稱為循環(huán)嵌套。 注意:多重循環(huán)程序中,只允許外重循環(huán)嵌套內(nèi)重循環(huán)程序,不允許循環(huán)互相相交,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部。 3、循環(huán)程序4.1.3 匯編語言程序的基本結構第35頁,共54頁。4.2 匯編語言源程序的編輯和匯編4.2.1 源程序編輯4.2.2 源程序的匯編4.2.3 偽指令第36頁,共54頁。4.2.1 源程序編輯在微型計算機上,借助編輯軟件,編寫或修改匯編語言源程序。如行編輯或屏幕編輯軟件。第37頁,共54頁。4.2.2 源程序的匯編

16、匯編:將匯編語言源程序轉換為機器碼表示的目標程序的過程。對單片機有: 一、手工匯編 二、機器匯編 三、反匯編第38頁,共54頁。通過手工方式查指令編碼表,逐個把助記符指令“翻譯”成機器碼,然后把得到的機器碼程序鍵入單片機,進行調(diào)試和運行。手工匯編的缺點: 1、偏移量的計算容易出錯 2、程序的修改會引起后面指令地址的變化,轉移指令的偏移量也要重新計算。1、手工匯編4.2.2 源程序的匯編第39頁,共54頁。機器匯編是在計算機上使用交叉匯編程序 進行源程序的匯編。匯編工作由機器 自動完成,最后得到以機器碼表示 的目標程序。2、機器匯編4.2.2 源程序的匯編第40頁,共54頁。將二進制機器語言程序

17、翻譯成匯編語言程序的過程稱反匯編。匯編和反匯編的過程如圖4-3所示。3、反匯編4.2.2 源程序的匯編第41頁,共54頁。源程序(匯編語言)目標碼(機器語言)匯編(匯編程序)反匯編(匯編程序)圖4-3 匯編和反匯編過程3、反匯編4.2.2 源程序的匯編第42頁,共54頁。 偽指令不是真正的指令,它主要是為匯編程序服務的,在匯編過程中起控制作用的指示性語句。無地址、無對應的機器碼,在匯編時不產(chǎn)生目標程序。 ORG 匯編起始地址命令 END 匯編語言程序結束偽指令 EQU 賦值偽指令 DB 定義字節(jié)偽指令 DW 定義字偽指令 BIT 位地址符號偽指令 DATA 定義標號數(shù)值偽指令4.2.3 偽指令

18、第43頁,共54頁。1、ORG 匯編起始地址命令 格式:ORG 16位地址功能:規(guī)定該偽指令后面程序的匯編地址,即匯編后生成目 標程序存放的起始地址。例如: ORG 2000H START:MOV A,#64H 規(guī)定了START的地址是2000H,又規(guī)定了匯編后的第一條指令碼從2000H開始存放。注意:在一個源程序中,可以多次使用ORG指令,來規(guī)定不同的程序段的起始地址。但是,地址必須由小到大排列,不能交叉、重疊。4.2.3 偽指令第44頁,共54頁。2、END 匯編結束命令 格式:END功能:通知匯編程序結束匯編。在END之后所有的匯編指令均 不予以處理。4.2.3 偽指令第45頁,共54頁

19、。3、EQU 賦值命令 格式:字符名稱 EQU 項(數(shù)或匯編符號)功能:把“項”賦給“字符名稱”。注意:字符名稱不等于標號(其后沒有冒號);其中的項,可以是數(shù),也可以是匯編符號。EQU賦值過的符號名可以用作數(shù)據(jù)、代碼地址、位地址或一個立即數(shù)。可以是8位的,也可以是16位的。為程序的閱讀、修改和調(diào)試帶來方便4.2.3 偽指令第46頁,共54頁。3、EQU 賦值命令 例如:例1: A_ASCII EQU A ;A_ASCII分配字符“A”的ASCII MOV A,A_ASCII ;值(41H=65)例2: A10 EQU 10 DELY EQU 07EBH MOV A,A10 ;A10作為片內(nèi)的一

20、個直接地址 LCALL DELY ;DELY作為一個16位子程序的入口地址4.2.3 偽指令第47頁,共54頁。4、DATA 數(shù)據(jù)地址賦值命令 格式:字符名稱 DATA 表達式功能:與EQU類似,但有以下差別: EQU定義的字符名必須先定義后使用,而DATA定義的字 符名可以后定義先使用。 用EQU指令可以把一個匯編符號賦給一個名字,而DATA 只能把數(shù)據(jù)賦給字符名。 DATA語句可以把一個表達式的值賦給字符名稱,其中的表 達式應是可求值的。 DATA偽指令在程序中用來定義數(shù)據(jù)地址。4.2.3 偽指令第48頁,共54頁。5、DB 定義字節(jié)命令 格式:DB 項或項表功能:通知匯編程序從當前ROM地址開始,保留一個字或字節(jié) 串的存儲單元,并存入DB后的數(shù)據(jù)。注意:項或項表可以是一個字節(jié),用逗號隔開的字節(jié)串或括在 單引號中的ASCII字符串。4.2.3 偽指令第49頁,共54頁。 ORG 2000H DB 0A3HLIST:DB 26H,03HSTR: DB ABC 經(jīng)匯編后:(2000H)=A3H, (2001H)=26H, (2002H)=03H, (2003H)=41H, (2004H)=42H, (2005H)=43H, (41H,42H,43H分別為A,B,C的

溫馨提示

  • 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

提交評論