匯編語(yǔ)言程序設(shè)計(jì)(32).ppt_第1頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)(32).ppt_第2頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)(32).ppt_第3頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)(32).ppt_第4頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)(32).ppt_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章 匯編語(yǔ)言程序設(shè)計(jì),匯編語(yǔ)言是最早應(yīng)用于單片機(jī)的開(kāi)發(fā)與應(yīng)用的程序語(yǔ)言。相比其他程序設(shè)計(jì)語(yǔ)言,匯編語(yǔ)言執(zhí)行速度快、代碼短小精悍,且指令的執(zhí)行周期確定。但是匯編語(yǔ)言也有不足之處,比如其指令復(fù)雜、缺乏通用性、不便于程序的移植。目前,隨著電子技術(shù)的發(fā)展,匯編語(yǔ)言的使用范圍越來(lái)越小,逐漸被C51語(yǔ)言所代替,但是學(xué)習(xí)匯編語(yǔ)言對(duì)理解8051的結(jié)構(gòu)及指令是很有幫助的。 本章主要介紹了匯編語(yǔ)言的概述、指令格式,以及匯編語(yǔ)言的程序結(jié)構(gòu)。本章內(nèi)容包括: 匯編語(yǔ)言程序概述 匯編語(yǔ)言指令及其格式 匯編語(yǔ)言程序設(shè)計(jì) Keil Vison3中運(yùn)行匯編語(yǔ)言實(shí)例,4.1 匯編語(yǔ)言程序概述,匯編語(yǔ)言程序是單片機(jī)匯編指令的集合。匯編語(yǔ)言程序設(shè)計(jì)與51系列單片機(jī)的匯編指令集和硬件結(jié)構(gòu)等有密切聯(lián)系,在單片機(jī)上可以用來(lái)實(shí)現(xiàn)特定的功能和任務(wù)。匯編語(yǔ)言以其簡(jiǎn)練的代碼、快速的操作硬件能力而獲得了廣泛使用,這里首先介紹匯編語(yǔ)言的基本情況。,4.1.1 匯編語(yǔ)言簡(jiǎn)介,匯編語(yǔ)言是采用助記符標(biāo)識(shí)的指令的程序設(shè)計(jì)語(yǔ)言。其中助記符標(biāo)識(shí)是二進(jìn)制指令的形象標(biāo)記。由于現(xiàn)在采用的計(jì)算機(jī)都是二進(jìn)制的,其所能執(zhí)行的每一條指令都對(duì)應(yīng)一組二進(jìn)制代碼。采用二進(jìn)制代碼來(lái)表示指令和數(shù)據(jù)的語(yǔ)言為機(jī)器語(yǔ)言,它是唯一能被計(jì)算機(jī)識(shí)別的語(yǔ)言。然而這種語(yǔ)言很難記憶和辨認(rèn),給程序設(shè)計(jì)工作帶來(lái)很大麻煩。為了容易理解和記憶這些計(jì)算機(jī)的指令,人們用一些英文單詞和字符等作為助記符來(lái)描述每一條二進(jìn)制指令的功能。用助記符標(biāo)識(shí)的指令就是計(jì)算機(jī)的匯編語(yǔ)言,匯編語(yǔ)言和機(jī)器語(yǔ)言是一一對(duì)應(yīng)的。 采用匯編語(yǔ)言編寫(xiě)的程序,每條指令的含義一目了然,這給單片機(jī)程序的編寫(xiě)、閱讀和修改帶來(lái)很大方便。而且用匯編語(yǔ)言編寫(xiě)的程序代碼少,執(zhí)行速度快,每條指令的執(zhí)行時(shí)間完全確定。因此,在最初的單片機(jī)應(yīng)用系統(tǒng)中,主要是用匯編語(yǔ)言來(lái)編寫(xiě)程序。,4.1.2 匯編語(yǔ)言程序設(shè)計(jì)步驟,使用匯編語(yǔ)言進(jìn)行計(jì)算機(jī)或者單片機(jī)程序設(shè)計(jì)的流程圖,如圖所示,一般可以分為以下幾個(gè)步驟:,4.1.3 匯編語(yǔ)言程序?qū)嵗?首先,為了讓大家認(rèn)識(shí)一下匯編語(yǔ)言的結(jié)構(gòu),這里舉一個(gè)匯編語(yǔ)言的例子。程序示例如下。 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 ;分離出十位和個(gè)位 DIV AB SWAP A ;十位存入高字節(jié) ADD A, B ;低位存入低字節(jié)中 MOV R6, A END ;,4.2 偽指令,偽指令是為匯編程序提供某種信息的指令。偽指令不能命令CPU執(zhí)行某種操作,也沒(méi)有對(duì)應(yīng)的機(jī)器代碼,而51系列單片機(jī)的指令能使單片機(jī)的CPU執(zhí)行某種操作,能生成對(duì)應(yīng)的機(jī)器代碼。51系列單片機(jī)匯編程序常用的偽指令有如下幾類(lèi)。,4.2.1 匯編程序起始偽指令ORG,匯編程序起始偽指令ORG主要用于規(guī)定匯編程序塊或數(shù)據(jù)塊存放的起始地址,它的使用格式如下: 標(biāo)號(hào): ORG 16位地址 示例如下: ORG 0200H START: MOV A, #45H ,4.2.2 匯編程序結(jié)束偽指令END,匯編程序結(jié)束偽指令END是匯編語(yǔ)言源程序的結(jié)束標(biāo)志。END偽指令的使用格式是: 標(biāo)號(hào): END 表達(dá)式 在程序中,END以后所寫(xiě)的任何指令,匯編程序都不予以處理。一個(gè)源程序只能有一個(gè)END偽指令。對(duì)于同時(shí)包含有主程序和子程序的匯編源程序中,同樣也只能有一個(gè)END偽指令。,4.2.3 等值偽指令EQU(或=),等值偽指令EQU是將一個(gè)數(shù)或者特定的匯編符號(hào)賦予規(guī)定的字符名稱(chēng)。它的使用格式如下: 字符名稱(chēng) EQU 數(shù)據(jù)或匯編符號(hào) 或者 字符名稱(chēng) = 數(shù)據(jù)或匯編符號(hào) 用EQU指令賦值以后的字符名稱(chēng)可以用作數(shù)據(jù)地址、代碼地址、位地址或者當(dāng)作一個(gè)立即數(shù)來(lái)使用。因此,給字符名稱(chēng)所賦的值可以是8位數(shù),也可以是16位數(shù)。需要注意的是,這里使用的“字符名稱(chēng)”不是標(biāo)號(hào),不能用“:”來(lái)做分隔符。,4.2.4 數(shù)據(jù)地址賦值偽指令DATA,數(shù)據(jù)地址賦值偽指令DATA是將數(shù)據(jù)地址或代碼地址賦予規(guī)定的字符名稱(chēng)。其使用格式如下: 字符名稱(chēng) DATA 表達(dá)式 DATA偽指令的功能與EQU有些相似,使用時(shí)要注意它們有以下區(qū)別: EQU偽指令必須先定義后使用,而DATA偽指令則無(wú)此限制; EQU偽指令可以把一個(gè)匯編符號(hào)賦給一個(gè)字符名稱(chēng),而DATA偽指令則不能; DATA偽指令可將一個(gè)表達(dá)式的值賦給一個(gè)字符變量,所定義的字符變量也可以出現(xiàn)在表達(dá)式中,而EQU定義的字符則不能這樣使用。DATA偽指令在程序中常用來(lái)定義數(shù)據(jù)地址。,4.2.5 定義字節(jié)偽指令DB,定義字節(jié)偽指令DB是從標(biāo)號(hào)指定的地址單元開(kāi)始,將數(shù)據(jù)表中的字節(jié)數(shù)據(jù)按順序依次保存。其使用格式如下: 標(biāo)號(hào): DB 8位字節(jié)數(shù)據(jù)表 這里的數(shù)據(jù)表可以是一個(gè)或多個(gè)字節(jié)數(shù)據(jù)、字符串或表達(dá)式,各項(xiàng)數(shù)據(jù)用“,”分隔,一個(gè)數(shù)據(jù)項(xiàng)占一個(gè)存儲(chǔ)單元。定義字節(jié)偽指令DB的使用示例代碼如下: ORG 1000H DATA1: DB 11H,34H,60,90H DATA2: DB 111B,A,4.2.6 定義字偽指令DW,定義字偽指令DW是從標(biāo)號(hào)指定的地址單元開(kāi)始,將數(shù)據(jù)表中的字?jǐn)?shù)據(jù)按從左到右的順序依次保存。其使用的格式為: 標(biāo)號(hào): DW 16位字?jǐn)?shù)據(jù)表 DW的功能和DB相類(lèi)似,需要注意的是:16位數(shù)據(jù)要占用兩個(gè)單元的存儲(chǔ)器,其中,高8位數(shù)據(jù)存入低地址字節(jié),低8位數(shù)據(jù)存入高地址字節(jié)。定義字偽指令DW的使用示例代碼如下: ORG 1000H DATA1: DW 13ABH, 4CH,4.2.7 定義空間偽指令DS,定義空間偽指令DS是從標(biāo)號(hào)指定的地址單元開(kāi)始,保留若干個(gè)存儲(chǔ)單元作為備用的空間。其中,保留的數(shù)量由表達(dá)式指定。其使用格式如下: 標(biāo)號(hào): DS 表達(dá)式 定義空間偽指令DS的使用示例代碼如下: ORG 1000H BUF: DS 07H 該段偽指令經(jīng)匯編以后,從地址1000H開(kāi)始保留7個(gè)內(nèi)存單元,然后從1007H開(kāi)始才可以進(jìn)行其他操作。,4.2.8 位地址符號(hào)偽指令BIT,位地址符號(hào)偽指令BIT,主要用于對(duì)位地址賦予所規(guī)定的字符名稱(chēng)。其使用格式如下: 字符名稱(chēng) BIT 位地址 位地址符號(hào)偽指令BIT的使用示例代碼如下: P20 BIT P2.0 P21 BIT P2.1 該段偽指令經(jīng)匯編以后,將位地址P2.0和P2.1賦給P20和P21,此后可以使用P20和P21當(dāng)作位地址來(lái)代替P2.0和P2.1。,4.3 匯編語(yǔ)言程序的格式,匯編語(yǔ)言程序的每一句程序一般由四部分組成,即標(biāo)號(hào)、操作碼、操作數(shù)和注釋。每個(gè)部分之間要用分隔符隔開(kāi),分隔符可以采用空格、冒號(hào)“:”、分號(hào)“;”。其使用格式如下: 標(biāo)號(hào): 操作碼 操作數(shù) ;注釋 一般對(duì)于一行匯編程序來(lái)說(shuō),只有操作碼是必不可少的,其他視情況而定可有可無(wú)。 標(biāo)號(hào)由8個(gè)或8個(gè)以下的字符或數(shù)字構(gòu)成,但第一個(gè)必須是字母。除字母和數(shù)字外,在標(biāo)號(hào)中還可以使用下劃線符號(hào)“_”。各種特殊功能寄存器名、各個(gè)位地址記憶符、各種偽指令等都不能用作標(biāo)號(hào)。以下是一些合法的標(biāo)號(hào): P10、DELY、DATA0等。 以下的字符串不能用作標(biāo)號(hào): 7P、P+A、MOV等。,4.4 源程序的匯編,源程序的匯編是將匯編語(yǔ)言源程序轉(zhuǎn)換為用機(jī)器碼表示的目標(biāo)程序的過(guò)程。其中能完成該轉(zhuǎn)換功能的程序稱(chēng)為匯編程序。 匯編常用的方法有兩種:一種是手工匯編,另一種是機(jī)器匯編。 手工匯編是把程序用助記符指令寫(xiě)出后,然后人為查找指令代碼表,逐個(gè)把助記符指令翻譯成機(jī)器碼,然后把得到的機(jī)器碼程序(以十六進(jìn)制形式)輸入到單片機(jī)開(kāi)發(fā)軟件中,并進(jìn)行調(diào)試。由于手工匯編是按絕對(duì)地址進(jìn)行定位的,所以,對(duì)于偏移量的計(jì)算和程序的修改有諸多不便。而且手工匯編十分復(fù)雜,很費(fèi)時(shí)間,也很容易出錯(cuò),因此,一般只有程序較小或工具所限時(shí)才使用。 機(jī)器匯編是在計(jì)算機(jī)上,使用匯編程序?qū)R編語(yǔ)言源程序轉(zhuǎn)換為計(jì)算機(jī)能識(shí)別的機(jī)器碼表示的目標(biāo)程序。匯編工作由計(jì)算機(jī)自動(dòng)完成,生成的目標(biāo)程序經(jīng)調(diào)試無(wú)誤后,再固化到單片機(jī)的程序存儲(chǔ)器中。,4.5 Keil Vison3中運(yùn)行匯編語(yǔ)言實(shí)例,這里首先通過(guò)一個(gè)簡(jiǎn)單的實(shí)例,來(lái)介紹如何使用Vison3進(jìn)行單片機(jī)匯編程序的開(kāi)發(fā)。,4.5.1 創(chuàng)建項(xiàng)目,首先,雙擊啟動(dòng)Vison3集成開(kāi)發(fā)環(huán)境,開(kāi)始創(chuàng)建項(xiàng)目,操作步驟如下。,4.5.2 創(chuàng)建源文件,項(xiàng)目建立完畢后,現(xiàn)在開(kāi)始進(jìn)行源文件的設(shè)計(jì),這里便涉及到項(xiàng)目的核心。具體的操作步驟如下所述。,4.5.3 編譯項(xiàng)目,項(xiàng)目及源文件建立完畢后便可以編譯項(xiàng)目了。選擇“Project”“Build target”命令,即可編譯,如果程序無(wú)誤,則在輸出窗口中顯示編譯結(jié)果,如圖所示。,4.5.4 仿真調(diào)試,項(xiàng)目建立并編譯通過(guò)后,在下載到單片機(jī)硬件中之前,一般需要進(jìn)行仿真調(diào)試,確保程序的執(zhí)行完全符合要求。Vison3的集成開(kāi)發(fā)環(huán)境提供了完善的項(xiàng)目仿真和調(diào)試工具,下面就介紹如何使用Vison3來(lái)進(jìn)行項(xiàng)目的仿真調(diào)試。 項(xiàng)目仿真調(diào)試之前需要確保該項(xiàng)目完全通過(guò)編譯。仿真調(diào)試的步驟如下所述: (1)選擇“Debug”“Start/Stop Debug Session”命令,此時(shí),Vison3進(jìn)入仿真調(diào)試模式。界面的菜單欄和工具欄都相應(yīng)的進(jìn)行了變化。 (2)使用單步執(zhí)行的方式運(yùn)行程序。每按F11鍵一次,程序執(zhí)行一條指令。用戶(hù)可以看到程序執(zhí)行時(shí),單片機(jī)的各個(gè)資源和寄存器值是如何變化的。 (3)當(dāng)程序執(zhí)行完畢的時(shí)候,在寄存器顯示窗口中可以看到程序仿真的結(jié)果,如圖所示。

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論