




已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章 匯編語言程序設計,匯編語言是最早應用于單片機的開發(fā)與應用的程序語言。相比其他程序設計語言,匯編語言執(zhí)行速度快、代碼短小精悍,且指令的執(zhí)行周期確定。但是匯編語言也有不足之處,比如其指令復雜、缺乏通用性、不便于程序的移植。目前,隨著電子技術的發(fā)展,匯編語言的使用范圍越來越小,逐漸被C51語言所代替,但是學習匯編語言對理解8051的結構及指令是很有幫助的。 本章主要介紹了匯編語言的概述、指令格式,以及匯編語言的程序結構。本章內容包括: 匯編語言程序概述 匯編語言指令及其格式 匯編語言程序設計 Keil Vison3中運行匯編語言實例,4.1 匯編語言程序概述,匯編語言程序是單片機匯編指令的集合。匯編語言程序設計與51系列單片機的匯編指令集和硬件結構等有密切聯(lián)系,在單片機上可以用來實現(xiàn)特定的功能和任務。匯編語言以其簡練的代碼、快速的操作硬件能力而獲得了廣泛使用,這里首先介紹匯編語言的基本情況。,4.1.1 匯編語言簡介,匯編語言是采用助記符標識的指令的程序設計語言。其中助記符標識是二進制指令的形象標記。由于現(xiàn)在采用的計算機都是二進制的,其所能執(zhí)行的每一條指令都對應一組二進制代碼。采用二進制代碼來表示指令和數(shù)據(jù)的語言為機器語言,它是唯一能被計算機識別的語言。然而這種語言很難記憶和辨認,給程序設計工作帶來很大麻煩。為了容易理解和記憶這些計算機的指令,人們用一些英文單詞和字符等作為助記符來描述每一條二進制指令的功能。用助記符標識的指令就是計算機的匯編語言,匯編語言和機器語言是一一對應的。 采用匯編語言編寫的程序,每條指令的含義一目了然,這給單片機程序的編寫、閱讀和修改帶來很大方便。而且用匯編語言編寫的程序代碼少,執(zhí)行速度快,每條指令的執(zhí)行時間完全確定。因此,在最初的單片機應用系統(tǒng)中,主要是用匯編語言來編寫程序。,4.1.2 匯編語言程序設計步驟,使用匯編語言進行計算機或者單片機程序設計的流程圖,如圖所示,一般可以分為以下幾個步驟:,4.1.3 匯編語言程序實例,首先,為了讓大家認識一下匯編語言的結構,這里舉一個匯編語言的例子。程序示例如下。 ORG 0200H ;匯編程序起始指令 MOV A, 32H ;將單字節(jié)數(shù)據(jù)存入累加器A中 MOV B, #100 ;分離出百位數(shù) DIV AB MOV R5, A ;百位數(shù)送入寄存器R5 XCH A, B ;余數(shù)存入累加器A中 MOV B, #10 ;分離出十位和個位 DIV AB SWAP A ;十位存入高字節(jié) ADD A, B ;低位存入低字節(jié)中 MOV R6, A END ;,4.2 偽指令,偽指令是為匯編程序提供某種信息的指令。偽指令不能命令CPU執(zhí)行某種操作,也沒有對應的機器代碼,而51系列單片機的指令能使單片機的CPU執(zhí)行某種操作,能生成對應的機器代碼。51系列單片機匯編程序常用的偽指令有如下幾類。,4.2.1 匯編程序起始偽指令ORG,匯編程序起始偽指令ORG主要用于規(guī)定匯編程序塊或數(shù)據(jù)塊存放的起始地址,它的使用格式如下: 標號: ORG 16位地址 示例如下: ORG 0200H START: MOV A, #45H ,4.2.2 匯編程序結束偽指令END,匯編程序結束偽指令END是匯編語言源程序的結束標志。END偽指令的使用格式是: 標號: END 表達式 在程序中,END以后所寫的任何指令,匯編程序都不予以處理。一個源程序只能有一個END偽指令。對于同時包含有主程序和子程序的匯編源程序中,同樣也只能有一個END偽指令。,4.2.3 等值偽指令EQU(或=),等值偽指令EQU是將一個數(shù)或者特定的匯編符號賦予規(guī)定的字符名稱。它的使用格式如下: 字符名稱 EQU 數(shù)據(jù)或匯編符號 或者 字符名稱 = 數(shù)據(jù)或匯編符號 用EQU指令賦值以后的字符名稱可以用作數(shù)據(jù)地址、代碼地址、位地址或者當作一個立即數(shù)來使用。因此,給字符名稱所賦的值可以是8位數(shù),也可以是16位數(shù)。需要注意的是,這里使用的“字符名稱”不是標號,不能用“:”來做分隔符。,4.2.4 數(shù)據(jù)地址賦值偽指令DATA,數(shù)據(jù)地址賦值偽指令DATA是將數(shù)據(jù)地址或代碼地址賦予規(guī)定的字符名稱。其使用格式如下: 字符名稱 DATA 表達式 DATA偽指令的功能與EQU有些相似,使用時要注意它們有以下區(qū)別: EQU偽指令必須先定義后使用,而DATA偽指令則無此限制; EQU偽指令可以把一個匯編符號賦給一個字符名稱,而DATA偽指令則不能; DATA偽指令可將一個表達式的值賦給一個字符變量,所定義的字符變量也可以出現(xiàn)在表達式中,而EQU定義的字符則不能這樣使用。DATA偽指令在程序中常用來定義數(shù)據(jù)地址。,4.2.5 定義字節(jié)偽指令DB,定義字節(jié)偽指令DB是從標號指定的地址單元開始,將數(shù)據(jù)表中的字節(jié)數(shù)據(jù)按順序依次保存。其使用格式如下: 標號: DB 8位字節(jié)數(shù)據(jù)表 這里的數(shù)據(jù)表可以是一個或多個字節(jié)數(shù)據(jù)、字符串或表達式,各項數(shù)據(jù)用“,”分隔,一個數(shù)據(jù)項占一個存儲單元。定義字節(jié)偽指令DB的使用示例代碼如下: ORG 1000H DATA1: DB 11H,34H,60,90H DATA2: DB 111B,A,4.2.6 定義字偽指令DW,定義字偽指令DW是從標號指定的地址單元開始,將數(shù)據(jù)表中的字數(shù)據(jù)按從左到右的順序依次保存。其使用的格式為: 標號: DW 16位字數(shù)據(jù)表 DW的功能和DB相類似,需要注意的是:16位數(shù)據(jù)要占用兩個單元的存儲器,其中,高8位數(shù)據(jù)存入低地址字節(jié),低8位數(shù)據(jù)存入高地址字節(jié)。定義字偽指令DW的使用示例代碼如下: ORG 1000H DATA1: DW 13ABH, 4CH,4.2.7 定義空間偽指令DS,定義空間偽指令DS是從標號指定的地址單元開始,保留若干個存儲單元作為備用的空間。其中,保留的數(shù)量由表達式指定。其使用格式如下: 標號: DS 表達式 定義空間偽指令DS的使用示例代碼如下: ORG 1000H BUF: DS 07H 該段偽指令經匯編以后,從地址1000H開始保留7個內存單元,然后從1007H開始才可以進行其他操作。,4.2.8 位地址符號偽指令BIT,位地址符號偽指令BIT,主要用于對位地址賦予所規(guī)定的字符名稱。其使用格式如下: 字符名稱 BIT 位地址 位地址符號偽指令BIT的使用示例代碼如下: P20 BIT P2.0 P21 BIT P2.1 該段偽指令經匯編以后,將位地址P2.0和P2.1賦給P20和P21,此后可以使用P20和P21當作位地址來代替P2.0和P2.1。,4.3 匯編語言程序的格式,匯編語言程序的每一句程序一般由四部分組成,即標號、操作碼、操作數(shù)和注釋。每個部分之間要用分隔符隔開,分隔符可以采用空格、冒號“:”、分號“;”。其使用格式如下: 標號: 操作碼 操作數(shù) ;注釋 一般對于一行匯編程序來說,只有操作碼是必不可少的,其他視情況而定可有可無。 標號由8個或8個以下的字符或數(shù)字構成,但第一個必須是字母。除字母和數(shù)字外,在標號中還可以使用下劃線符號“_”。各種特殊功能寄存器名、各個位地址記憶符、各種偽指令等都不能用作標號。以下是一些合法的標號: P10、DELY、DATA0等。 以下的字符串不能用作標號: 7P、P+A、MOV等。,4.4 源程序的匯編,源程序的匯編是將匯編語言源程序轉換為用機器碼表示的目標程序的過程。其中能完成該轉換功能的程序稱為匯編程序。 匯編常用的方法有兩種:一種是手工匯編,另一種是機器匯編。 手工匯編是把程序用助記符指令寫出后,然后人為查找指令代碼表,逐個把助記符指令翻譯成機器碼,然后把得到的機器碼程序(以十六進制形式)輸入到單片機開發(fā)軟件中,并進行調試。由于手工匯編是按絕對地址進行定位的,所以,對于偏移量的計算和程序的修改有諸多不便。而且手工匯編十分復雜,很費時間,也很容易出錯,因此,一般只有程序較小或工具所限時才使用。 機器匯編是在計算機上,使用匯編程序將匯編語言源程序轉換為計算機能識別的機器碼表示的目標程序。匯編工作由計算機自動完成,生成的目標程序經調試無誤后,再固化到單片機的程序存儲器中。,4.5 Keil Vison3中運行匯編語言實例,這里首先通過一個簡單的實例,來介紹如何使用Vison3進行單片機匯編程序的開發(fā)。,4.5.1 創(chuàng)建項目,首先,雙擊啟動Vison3集成開發(fā)環(huán)境,開始創(chuàng)建項目,操作步驟如下。,4.5.2 創(chuàng)建源文件,項目建立完畢后,現(xiàn)在開始進行源文件的設計,這里便涉及到項目的核心。具體的操作步驟如下所述。,4.5.3 編譯項目,項目及源文件建立完畢后便可以編譯項目了。選擇“Project”“Build target”命令,即可編譯,如果程序無誤,則在輸出窗口中顯示編譯結果,如圖所示。,4.5.4 仿真調試,項目建立并編譯通過后,在下載到單片機硬件中之前,一般需要進行仿真調試,確保程序的執(zhí)行完全符合要求。Vison3的集成開發(fā)環(huán)境提供了完善的項目仿真和調試工具,下面就介紹如何使用Vison3來進行項目的仿真調試。 項目仿真調試之前需要確保該項目完全通過編譯。仿真調試的步驟如下所述: (1)選擇“Debug”“Start/Stop Debug Session”命令,此時,Vison3進入仿真調試模式。界面的菜單欄和工具欄都相應的進行了變化。 (2)使用單步執(zhí)行的方式運行程序。每按F11鍵一次,程序執(zhí)行一條指令。用戶可以看到程序執(zhí)行時,單片機的各個資源和寄存器值是如何變化的。 (3)當程序執(zhí)行完畢的時候,在寄存器顯示窗口中可以看到程序仿真的結果,如圖所示。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有限責任公司股東合作協(xié)議模板
- 水杯外觀標準培訓
- 心衰的護理新進展
- 怎樣做講課課件
- 電焊中級培訓
- 多功能電動護理床
- 護理創(chuàng)新項目比賽
- 《做個家庭小主人》
- 中國旗袍培訓
- 車間班組年度工作總結
- 廉潔行醫(yī)專題培訓課件
- 南通市如東縣醫(yī)療衛(wèi)生單位招聘事業(yè)編制工作人員筆試真題2024
- 歷史●甘肅卷丨2024年甘肅省普通高中學業(yè)水平等級性考試高考歷史真題試卷及答案
- 2024年杭州市臨安區(qū)事業(yè)單位統(tǒng)一招聘真題
- C語言程序設計基礎知到智慧樹期末考試答案題庫2025年石河子大學
- 黨建考試試題及答案國企
- 小學圖書館面試題及答案
- 客運行業(yè)事故隱患內部報告獎勵管理制度2025
- 快消品包裝2025年可再生資源利用現(xiàn)狀與前景報告
- 縱隔腫物護理
- 房屋建筑與市政工程重大事故安全隱患判定標準解讀課件
評論
0/150
提交評論