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

下載本文檔

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

文檔簡(jiǎn)介

1、第三章第三章 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì) 教學(xué)目的: 1、通過本章的學(xué)習(xí),使學(xué)生了解機(jī)器語言、匯編語言和高級(jí)語言的特點(diǎn),掌握匯編語言程序的設(shè)計(jì)方法和設(shè)計(jì)步驟; 2、使學(xué)生熟悉Keil c仿真軟件的使用。 教學(xué)重點(diǎn):1、分支程序設(shè)計(jì)方法; 2、循環(huán)程序設(shè)計(jì)方法; 3、查表程序和子程序設(shè)計(jì)方法。 教學(xué)難點(diǎn):1、分支程序的設(shè)計(jì)思想; 2、循環(huán)程序的設(shè)計(jì)思想; 3、查表程序和子程序的設(shè)計(jì)思想。 第一節(jié) 匯編語言的構(gòu)成 匯編語句匯編語句的集合構(gòu)成了匯編語言匯編語言,它是匯編語言的基本元素。 常分為指令性語句指令性語句和指示性語句指示性語句。1、指令性語句: 是采用助記符助記符構(gòu)成的匯編語言語句匯編

2、語言語句,每條語句都有與之對(duì)應(yīng)的指令碼指令碼。對(duì)MCS-51,指令性語句就是前面講到的111條條指令的助記符語句。 它是匯編語句的主體,也是人們進(jìn)行匯編匯編語言程序設(shè)計(jì)的基本語句語言程序設(shè)計(jì)的基本語句。2、指示性語句: 又稱偽指令偽指令語句,簡(jiǎn)稱偽指令偽指令。它不產(chǎn)生不產(chǎn)生可供機(jī)器直接執(zhí)行的機(jī)器碼機(jī)器碼,也不也不會(huì)直接影響直接影響存儲(chǔ)器中代碼代碼和數(shù)據(jù)分布數(shù)據(jù)分布,只是在機(jī)器匯編時(shí)匯編時(shí)供供匯編程序匯編程序識(shí)別和執(zhí)行識(shí)別和執(zhí)行的命令,用來對(duì)機(jī)器匯編過程匯編過程進(jìn)行某種控制控制,令其進(jìn)行一些特殊的操作。 在MCS-51中常用的偽指令有8條。 1)定位偽指令定位偽指令ORG 常用于匯編語言源程序源

3、程序或數(shù)據(jù)塊開頭開頭,規(guī)定程序塊程序塊或數(shù)據(jù)塊數(shù)據(jù)塊存放的起始位置起始位置。 格式:格式: 標(biāo)號(hào): ORG 例如:例如: ORG 0030H MOV A,30H 表示指令MOV A,#20H所對(duì)應(yīng)的的機(jī)器碼74H、20H存放于程序存儲(chǔ)器0030H開始的ROM存儲(chǔ)單元。 注:一個(gè)匯編程序中可以有多個(gè)多個(gè)“ORG”語句,但必須按地址地址從小到大順序從小到大順序排放。 2)匯編結(jié)束偽指令END 格式: 標(biāo)號(hào): END 功能:功能:匯編語言源程序源程序結(jié)束標(biāo)志結(jié)束標(biāo)志,既告訴編譯程序:本匯編程序到此結(jié)束本匯編程序到此結(jié)束(無論其后是否還有無論其后是否還有程序語句程序語句) 注: 本條偽指令能且只能能且

4、只能用于整個(gè)匯編語言程序的末尾處末尾處,且一個(gè)程序只能有一條只能有一條。 3)定義字節(jié)數(shù)據(jù)偽指令定義字節(jié)數(shù)據(jù)偽指令DB 格式: 標(biāo)號(hào): DB 功能:功能:從標(biāo)號(hào)地址標(biāo)號(hào)地址開始在程序存儲(chǔ)器程序存儲(chǔ)器中定義字節(jié)數(shù)據(jù)數(shù)據(jù),字節(jié)數(shù)據(jù)表可以是多個(gè)字節(jié)數(shù)據(jù)、字符串字符串(單引號(hào)定界單引號(hào)定界)或表達(dá)式,它表示將字節(jié)數(shù)據(jù)表中的數(shù)據(jù)從左到右從左到右依次依次存放在指定地址單元。 例如:例如: ORG 1000H TAB:DB 2BH, 0A0H, A, 2*4 表示從程序存儲(chǔ)器程序存儲(chǔ)器1000H單元開始開始的地方連續(xù)連續(xù)存放數(shù)據(jù)2BH,0A0H,41H(字母A的ASCII碼),08H。 4)定義字?jǐn)?shù)據(jù)偽指令

5、定義字?jǐn)?shù)據(jù)偽指令DW 格式: 標(biāo)號(hào): DW 功能:功能:與DB類似,但DW定義的數(shù)據(jù)項(xiàng)為字字,包括兩個(gè)字節(jié),存放時(shí)高高位在位在前前,低低位在位在后后。 例如:例如: ORG 1000H DATA: DW 324AH, 3CH 表示從程序存儲(chǔ)器程序存儲(chǔ)器1000H單元開始開始的地方存放數(shù)據(jù)32H,4AH,00H,3CH(3CH以字字的形式表示為003CH)。 5)定義空間偽指令定義空間偽指令DS 格式: 標(biāo)號(hào): DS 功能:功能:從指定的地址開始,保留值個(gè)存儲(chǔ)單元作為備用備用的空間。 例如:例如: ORG 1000H BUF:DS 50 TAB:DB 22H ;22H存放在1032H單元 表示從

6、1000H開始開始的地方預(yù)留預(yù)留50(1000H1031H)個(gè)存儲(chǔ)字節(jié)空間。 6)符號(hào)定義偽指令符號(hào)定義偽指令EQU或或“=” 格式: 符號(hào)名 EQU 或: 符號(hào)名= 功能:功能:將表達(dá)式的值值或某個(gè)特定匯編符號(hào)匯編符號(hào)定定義義為一個(gè)指定指定的符號(hào)名符號(hào)名,只能定義單字節(jié)單字節(jié)數(shù)據(jù),并且必須遵循先定義先定義后使用后使用的原則,因此該語句通常放在放在源程序的開頭部分開頭部分。 例如例如: LEN=10 SUM EQU 21H MOV A,#LEN ; 執(zhí)行指令后,累加器A中的值為0AH(10) 7)數(shù)據(jù)賦值偽指令數(shù)據(jù)賦值偽指令DATA 格式: 符號(hào)名 DATA 功能:功能:將表達(dá)式的值值或某個(gè)特

7、定匯編符號(hào)匯編符號(hào)定義定義為一個(gè)指定的符號(hào)名符號(hào)名,只能定義單字節(jié)數(shù)據(jù),但可以可以先使用后定義先使用后定義,因此用它定義數(shù)據(jù)可以可以放在程序末尾末尾進(jìn)行數(shù)據(jù)定義。 例如:例如: MOV A,#LEN LEN DATA 10 盡管LEN的引用在定義之前,但匯編語言系統(tǒng)仍可以知道A的值是0AH. 8)位地址符號(hào)定義偽指令位地址符號(hào)定義偽指令 BIT 格式: 字符名 BIT 位地址 功能:功能: 把BIT后面的位地址值位地址值賦給賦給字符名字符名。其中字符名字符名不是不是標(biāo)號(hào)標(biāo)號(hào),其后沒有冒號(hào)。 例如:例如: LED1 BIT P1.0 FLAG BIT 02H 經(jīng)匯編后,P1口第0位的位地址90H

8、就賦給了LED1,而位尋址空間02H定義為FLAG。第二節(jié)匯編語言源程序的設(shè)計(jì)一、匯編語言源程序的設(shè)計(jì)步驟1、擬制設(shè)計(jì)任務(wù)書根據(jù)設(shè)計(jì)要求擬定擬定比較翔實(shí)的設(shè)計(jì)任務(wù)書任務(wù)書,包括:程序功能,技術(shù)指標(biāo),精度等級(jí),實(shí)施方案,工程進(jìn)度,所需設(shè)備,研制費(fèi)用和人員分工等。2、建立數(shù)學(xué)模型既把控制系統(tǒng)的計(jì)算任務(wù)或控制對(duì)象的物理過程抽象歸納抽象歸納為數(shù)學(xué)模型數(shù)學(xué)模型(數(shù)學(xué)公式、數(shù)學(xué)的推數(shù)學(xué)公式、數(shù)學(xué)的推理和判斷運(yùn)行狀態(tài)的模擬理和判斷運(yùn)行狀態(tài)的模擬等)。3、確立算法根據(jù)被控對(duì)象的實(shí)時(shí)過程實(shí)時(shí)過程和邏輯關(guān)系邏輯關(guān)系,把數(shù)學(xué)數(shù)學(xué)模型模型演化演化為計(jì)算機(jī)可以處理的形式可以處理的形式,并擬制擬制出具體的算法和步驟算法和

9、步驟。 算法算法是解決問題的方案方案,是編寫程序的一把鑰匙,只要根據(jù)要求弄清題目的算法,編寫程序就會(huì)十分容易。 教材中所列程序示例的算法通常比較簡(jiǎn)單,常用幾行文字加以表達(dá),閱讀程序前應(yīng)注意加深加深對(duì)他們的理解理解。4、繪制程序流程圖根據(jù)實(shí)際情況確定確定程序的結(jié)構(gòu)設(shè)計(jì)方法結(jié)構(gòu)設(shè)計(jì)方法(如模模塊化設(shè)計(jì)塊化設(shè)計(jì),自頂而下程序設(shè)計(jì)自頂而下程序設(shè)計(jì)等),并分別繪繪制制出相應(yīng)的程序流程圖程序流程圖。 5、分配分配存儲(chǔ)空間存儲(chǔ)空間和工作單元工作單元 6、編輯編輯匯編語言源程序源程序 7、上機(jī)調(diào)試調(diào)試和程序優(yōu)化優(yōu)化 二、設(shè)計(jì)方法 常用的程序設(shè)計(jì)方是法模塊化設(shè)計(jì)模塊化設(shè)計(jì)(或稱結(jié)構(gòu)化結(jié)構(gòu)化設(shè)計(jì)設(shè)計(jì)),是把總設(shè)計(jì)

10、任務(wù)劃分成若干若干子任務(wù)子任務(wù)(子模塊),分別分別設(shè)計(jì)設(shè)計(jì)各子模塊各子模塊,最后有機(jī)構(gòu)成總模構(gòu)成總模塊塊(主程序主程序)。 實(shí)現(xiàn)模塊化設(shè)計(jì)的基本基本模塊類型:順序程序順序程序;分分支程序支程序;循環(huán)程序循環(huán)程序。針對(duì)單片機(jī)特點(diǎn)還應(yīng)掌握查查表程序表程序,中斷程序中斷程序,子程序子程序等的設(shè)計(jì)。 1、順序程序和分支程序設(shè)計(jì) 1)順序程序: 程序按按編寫的順序順序依次依次往下執(zhí)行執(zhí)行每一條指令,直到直到最后一條最后一條。 它能夠解決某些實(shí)際問題,順序結(jié)構(gòu)程序往往是分支程序和循環(huán)程序的組成部分。 例:編寫計(jì)算下列算式的程序。 23H+45H+0ABH+03H 解: 分析:本題已給出給出了數(shù)學(xué)模型數(shù)學(xué)模

11、型,需要根據(jù)數(shù)學(xué)模型求出求出算法算法,再進(jìn)行編程編程。 根據(jù)數(shù)學(xué)模型,顯然要用加法指令加法指令,但當(dāng)68H+0ABH時(shí)已超出超出一個(gè)字節(jié),有溢出,結(jié)果也應(yīng)顯示,故,要有對(duì)溢出對(duì)溢出的處理處理。 流程圖: ORG 0030H MOV A,#23H ADD A,#45H ADD A,#0ABH XCH A,B ADDC A,#00H XCH A,B ADD A,#03H END 2)分支程序: 在實(shí)際問題的編程處理中,通常會(huì)遇到根據(jù)不同不同的條件的條件進(jìn)行判斷判斷,根據(jù)不同的判斷結(jié)果不同的判斷結(jié)果程序作出不同的相應(yīng)處理不同的相應(yīng)處理,這中結(jié)構(gòu)稱為分支分支。分支程序的設(shè)計(jì)主要依靠條件轉(zhuǎn)移指令條件轉(zhuǎn)移

12、指令、比較轉(zhuǎn)移指令比較轉(zhuǎn)移指令和位轉(zhuǎn)移指令位轉(zhuǎn)移指令來實(shí)現(xiàn)。 例:編寫計(jì)算下列算式的程序。設(shè)乘積小于255,b不等于0,請(qǐng)能整除,a、b值分別存放在3001H和3002H單元,結(jié)果存放于片外3000H單元。 25, ab Y ab,ab 解: 數(shù)學(xué)模型模型已給出給出,顯然用到條件轉(zhuǎn)移條件轉(zhuǎn)移指令。 由于條件轉(zhuǎn)移指令中,或A與、direct,或Rn、Ri與比較,故都要將片外片外數(shù)據(jù)傳到片內(nèi)片內(nèi)。 流程圖:Org 2000hMov dptr,#3001hMovx a,dptrMov 30h,aInc dptrMovx a,dptrCjne a,30h,l1Mov a,#25Sjmp eeL1:jc

13、 l2Mov b,30hMul abSjmp eeL2:mov b,aMov a,30hDiv abEe:mov dptr,#3000hMovx dptr,aEnd 注: 1、在流程圖中選選一條主線主線,遇到遇到有分支分支的地方就用用符號(hào)地址符號(hào)地址代替代替,直到直到公共公共插落點(diǎn)插落點(diǎn),公共插落公共插落點(diǎn)點(diǎn)處用用一個(gè)符號(hào)地址符號(hào)地址,并用用短轉(zhuǎn)移指令短轉(zhuǎn)移指令轉(zhuǎn)到轉(zhuǎn)到這個(gè)符號(hào)地址符號(hào)地址,以等待等待其他分支其他分支; 2、用用各分支點(diǎn)定義定義的符號(hào)地址作符號(hào)地址作為為標(biāo)號(hào)標(biāo)號(hào),分別寫出寫出其他支線到到公共插落點(diǎn)的程序程序,也用也用短轉(zhuǎn)移指令轉(zhuǎn)到轉(zhuǎn)到公共分支點(diǎn)公共分支點(diǎn)的符號(hào)地址符號(hào)地址,當(dāng)?shù)?/p>

14、當(dāng)?shù)阶詈笞詈笠粋€(gè)分分支時(shí)支時(shí)就可以繼續(xù)繼續(xù)向下向下運(yùn)行運(yùn)行; 3、若某一分支中沒有沒有實(shí)際實(shí)際的指令操作操作,其分支地方的符號(hào)地址符號(hào)地址就可以用用公共插落點(diǎn)處的符合地址符合地址,這一分支就可以省去省去不寫。 例:已知內(nèi)部RAM中的M1、M2單元中各有一個(gè)無符號(hào)8位二進(jìn)制數(shù)。試編程比較它們的大小,并把大數(shù)放到MAX單元中。 解: 數(shù)學(xué)模型模型:若M1M2,則將M1放到MAX;M1=0;x=y。 算法:減法、循環(huán)。 流程圖: Black equ 40h Mov sp,#70h Mov len,#10 Mov a,#100 Mov r1,#black Loop1:mov r1,a Inc r1 Inc a Djne len,loop1 Moc len,#15 Mov a,#30h Loop2:mov r1,a Inc r1 Inc a Djnz len,loop2 Clr a Mov len,#25 Mov r2,len Mov r1,#black Loop:clr c Subb a,r1 Jnc next1 Mov a,r1 Sjmp next2 Next1:add a,r1 Next2:inc r1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論