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

下載本文檔

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

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1第匯編語(yǔ)言程序設(shè)計(jì)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ǔ)言編寫的程序,每條指令的含義一目了然,這給單片機(jī)程序的編寫、閱讀和修改帶來(lái)很大方便。而且用匯編語(yǔ)言編寫的程序代碼少,執(zhí)行速度快,每條指令的執(zhí)行時(shí)間完全確定。因此,在最初的單片機(jī)應(yīng)用系統(tǒng)中,主要是用匯編語(yǔ)言來(lái)編寫程序。第2頁(yè)/共21頁(yè)第1頁(yè)/共21頁(yè)4.1.2匯編語(yǔ)言程序設(shè)計(jì)步驟使用匯編語(yǔ)言進(jìn)行計(jì)算機(jī)或者單片機(jī)程序設(shè)計(jì)的流程圖,如圖所示,一般可以分為以下幾個(gè)步驟:第3頁(yè)/共21頁(yè)第2頁(yè)/共21頁(yè)4.1.3匯編語(yǔ)言程序?qū)嵗紫龋瑸榱俗尨蠹艺J(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頁(yè)/共21頁(yè)第3頁(yè)/共21頁(yè)4.2偽指令偽指令是為匯編程序提供某種信息的指令。偽指令不能命令CPU執(zhí)行某種操作,也沒有對(duì)應(yīng)的機(jī)器代碼,而51系列單片機(jī)的指令能使單片機(jī)的CPU執(zhí)行某種操作,能生成對(duì)應(yīng)的機(jī)器代碼。51系列單片機(jī)匯編程序常用的偽指令有如下幾類。第5頁(yè)/共21頁(yè)第4頁(yè)/共21頁(yè)4.2.1匯編程序起始偽指令ORG匯編程序起始偽指令ORG主要用于規(guī)定匯編程序塊或數(shù)據(jù)塊存放的起始地址,它的使用格式如下:[標(biāo)號(hào):] ORG 16位地址示例如下:ORG 0200HSTART: MOV A, #45H……第6頁(yè)/共21頁(yè)第5頁(yè)/共21頁(yè)4.2.2匯編程序結(jié)束偽指令END匯編程序結(jié)束偽指令END是匯編語(yǔ)言源程序的結(jié)束標(biāo)志。END偽指令的使用格式是:[標(biāo)號(hào):] END [表達(dá)式]在程序中,END以后所寫的任何指令,匯編程序都不予以處理。一個(gè)源程序只能有一個(gè)END偽指令。對(duì)于同時(shí)包含有主程序和子程序的匯編源程序中,同樣也只能有一個(gè)END偽指令。第7頁(yè)/共21頁(yè)第6頁(yè)/共21頁(yè)4.2.3等值偽指令EQU(或=)等值偽指令EQU是將一個(gè)數(shù)或者特定的匯編符號(hào)賦予規(guī)定的字符名稱。它的使用格式如下:字符名稱 EQU 數(shù)據(jù)或匯編符號(hào)或者字符名稱 = 數(shù)據(jù)或匯編符號(hào)用EQU指令賦值以后的字符名稱可以用作數(shù)據(jù)地址、代碼地址、位地址或者當(dāng)作一個(gè)立即數(shù)來(lái)使用。因此,給字符名稱所賦的值可以是8位數(shù),也可以是16位數(shù)。需要注意的是,這里使用的“字符名稱”不是標(biāo)號(hào),不能用“:”來(lái)做分隔符。第8頁(yè)/共21頁(yè)第7頁(yè)/共21頁(yè)4.2.4數(shù)據(jù)地址賦值偽指令DATA數(shù)據(jù)地址賦值偽指令DATA是將數(shù)據(jù)地址或代碼地址賦予規(guī)定的字符名稱。其使用格式如下:字符名稱 DATA 表達(dá)式DATA偽指令的功能與EQU有些相似,使用時(shí)要注意它們有以下區(qū)別:EQU偽指令必須先定義后使用,而DATA偽指令則無(wú)此限制;EQU偽指令可以把一個(gè)匯編符號(hào)賦給一個(gè)字符名稱,而DATA偽指令則不能;DATA偽指令可將一個(gè)表達(dá)式的值賦給一個(gè)字符變量,所定義的字符變量也可以出現(xiàn)在表達(dá)式中,而EQU定義的字符則不能這樣使用。DATA偽指令在程序中常用來(lái)定義數(shù)據(jù)地址。第9頁(yè)/共21頁(yè)第8頁(yè)/共21頁(yè)4.2.5定義字節(jié)偽指令DB定義字節(jié)偽指令DB是從標(biāo)號(hào)指定的地址單元開始,將數(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 1000HDATA1: DB 11H,34H,60,90HDATA2: DB 111B,’A’第10頁(yè)/共21頁(yè)第9頁(yè)/共21頁(yè)4.2.6定義字偽指令DW定義字偽指令DW是從標(biāo)號(hào)指定的地址單元開始,將數(shù)據(jù)表中的字?jǐn)?shù)據(jù)按從左到右的順序依次保存。其使用的格式為:[標(biāo)號(hào):] DW 16位字?jǐn)?shù)據(jù)表DW的功能和DB相類似,需要注意的是:16位數(shù)據(jù)要占用兩個(gè)單元的存儲(chǔ)器,其中,高8位數(shù)據(jù)存入低地址字節(jié),低8位數(shù)據(jù)存入高地址字節(jié)。定義字偽指令DW的使用示例代碼如下:ORG 1000HDATA1: DW 13ABH, 4CH第11頁(yè)/共21頁(yè)第10頁(yè)/共21頁(yè)4.2.7定義空間偽指令DS定義空間偽指令DS是從標(biāo)號(hào)指定的地址單元開始,保留若干個(gè)存儲(chǔ)單元作為備用的空間。其中,保留的數(shù)量由表達(dá)式指定。其使用格式如下:[標(biāo)號(hào):] DS 表達(dá)式定義空間偽指令DS的使用示例代碼如下:ORG 1000HBUF: DS 07H該段偽指令經(jīng)匯編以后,從地址1000H開始保留7個(gè)內(nèi)存單元,然后從1007H開始才可以進(jìn)行其他操作。第12頁(yè)/共21頁(yè)第11頁(yè)/共21頁(yè)4.2.8位地址符號(hào)偽指令BIT位地址符號(hào)偽指令BIT,主要用于對(duì)位地址賦予所規(guī)定的字符名稱。其使用格式如下:字符名稱 BIT 位地址位地址符號(hào)偽指令BIT的使用示例代碼如下:P20 BIT P2.0P21 BIT P2.1該段偽指令經(jīng)匯編以后,將位地址P2.0和P2.1賦給P20和P21,此后可以使用P20和P21當(dāng)作位地址來(lái)代替P2.0和P2.1。第13頁(yè)/共21頁(yè)第12頁(yè)/共21頁(yè)4.3匯編語(yǔ)言程序的格式匯編語(yǔ)言程序的每一句程序一般由四部分組成,即標(biāo)號(hào)、操作碼、操作數(shù)和注釋。每個(gè)部分之間要用分隔符隔開,分隔符可以采用空格、冒號(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等。第14頁(yè)/共21頁(yè)第13頁(yè)/共21頁(yè)4.4源程序的匯編源程序的匯編是將匯編語(yǔ)言源程序轉(zhuǎn)換為用機(jī)器碼表示的目標(biāo)程序的過(guò)程。其中能完成該轉(zhuǎn)換功能的程序稱為匯編程序。匯編常用的方法有兩種:一種是手工匯編,另一種是機(jī)器匯編。手工匯編是把程序用助記符指令寫出后,然后人為查找指令代碼表,逐個(gè)把助記符指令翻譯成機(jī)器碼,然后把得到的機(jī)器碼程序(以十六進(jìn)制形式)輸入到單片機(jī)開發(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ǔ)器中。第15頁(yè)/共21頁(yè)第14頁(yè)/共21頁(yè)4.5KeilμVison3中運(yùn)行匯編語(yǔ)言實(shí)例這里首先通過(guò)一個(gè)簡(jiǎn)單的實(shí)例,來(lái)介紹如何使用μVison3進(jìn)行單片機(jī)匯編程序的開發(fā)。第16頁(yè)/共21頁(yè)第15頁(yè)/共21頁(yè)4.5.1創(chuàng)建項(xiàng)目首先,雙擊啟動(dòng)μVison3集成開發(fā)環(huán)境,開始創(chuàng)建項(xiàng)目,操作步驟如下。第17頁(yè)/共21頁(yè)第16頁(yè)/共21頁(yè)4.5.2創(chuàng)建源文件項(xiàng)目建立完畢后,現(xiàn)在開始進(jìn)行源文件的設(shè)計(jì),這里便涉及到項(xiàng)目的核心。具體的操作步驟如下所述。第18頁(yè)/共21頁(yè)第17頁(yè)/共21頁(yè)4.5.3編譯項(xiàng)目項(xiàng)目及源文件建立完畢后便可以編譯項(xiàng)目了。選擇“Project”→“Buildtarget”命令,即可編譯,如果程序無(wú)誤,則在輸出窗口中顯示編譯結(jié)果,如圖所示。第18頁(yè)/共21頁(yè)4.5.4仿真調(diào)試項(xiàng)目建立并編譯通過(guò)后,在下載到單片機(jī)硬件中之前,一般需要進(jìn)行仿真調(diào)試,確保程序的執(zhí)行完全符合要求。μVison3的集成開發(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/StopDebugSession”命令,此時(shí),μVison3進(jìn)入仿真調(diào)試模式。界面的菜單欄和工具欄都相應(yīng)的進(jìn)行了變化。(2)使用單步執(zhí)行的方式運(yùn)行程序。每按F11鍵一次,程序執(zhí)行一條指令。用戶可以看到程序執(zhí)行時(shí),單片機(jī)的各個(gè)資源和寄存器值是如何變化的。(3)當(dāng)程序執(zhí)行完畢的時(shí)候,在寄存器顯示窗口中可以看到程序仿真的結(jié)果,如圖所示。乘法運(yùn)算的結(jié)果保存在寄存

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論