




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2021-11-1113.43.4 匯編語言及匯編語言程序設(shè)計(jì)匯編語言及匯編語言程序設(shè)計(jì) 大家已經(jīng)了解了單片機(jī)內(nèi)部的結(jié)構(gòu),大家已經(jīng)了解了單片機(jī)內(nèi)部的結(jié)構(gòu),MCS-51MCS-51指令指令系統(tǒng)的尋址方式以及各類指令的格式、功能。系統(tǒng)的尋址方式以及各類指令的格式、功能。 下面我們講述如何利用下面我們講述如何利用MCS-51MCS-51的指令系統(tǒng),來編的指令系統(tǒng),來編寫具有不同功能的應(yīng)用程序。寫具有不同功能的應(yīng)用程序。2021-11-1123.4.1 3.4.1 機(jī)器語言、匯編語言和高級(jí)語言機(jī)器語言、匯編語言和高級(jí)語言 程序設(shè)計(jì)語言一般分為程序設(shè)計(jì)語言一般分為3 3種:機(jī)器語言、匯編語言和種:機(jī)器語
2、言、匯編語言和高級(jí)語言。高級(jí)語言。1 1、 機(jī)器語言機(jī)器語言 是唯一能直接被是唯一能直接被CPUCPU識(shí)別和執(zhí)行的二進(jìn)制代碼語言。識(shí)別和執(zhí)行的二進(jìn)制代碼語言。用機(jī)器語言編寫的程序,稱為目標(biāo)程序;通常無論用用機(jī)器語言編寫的程序,稱為目標(biāo)程序;通常無論用何種語言編寫的計(jì)算機(jī)程序,均需通過編譯將它翻譯何種語言編寫的計(jì)算機(jī)程序,均需通過編譯將它翻譯成機(jī)器語言程序才能被成機(jī)器語言程序才能被CPUCPU識(shí)別、運(yùn)行。識(shí)別、運(yùn)行。 但機(jī)器指令的二進(jìn)制代碼很難記憶、辨識(shí),給程但機(jī)器指令的二進(jìn)制代碼很難記憶、辨識(shí),給程序的編寫、閱讀和修改帶來很大的困難,因此一般不序的編寫、閱讀和修改帶來很大的困難,因此一般不采用
3、機(jī)器語言編寫程序。采用機(jī)器語言編寫程序。2021-11-1132、 匯編語言匯編語言 為了容易理解和記憶計(jì)算機(jī)指令,人們用一些英文單詞及為了容易理解和記憶計(jì)算機(jī)指令,人們用一些英文單詞及數(shù)字作為助記符來描述每一條指令的功能。用助記符描述的指數(shù)字作為助記符來描述每一條指令的功能。用助記符描述的指令系統(tǒng),被稱為機(jī)器的匯編語言系統(tǒng),簡稱匯編語言。令系統(tǒng),被稱為機(jī)器的匯編語言系統(tǒng),簡稱匯編語言。 用匯編語言的每條指令意義清晰,編寫、閱讀和修改都很用匯編語言的每條指令意義清晰,編寫、閱讀和修改都很。匯編指令和機(jī)器語言指令是一一對(duì)應(yīng)的,即一條可執(zhí)行的匯。匯編指令和機(jī)器語言指令是一一對(duì)應(yīng)的,即一條可執(zhí)行的匯
4、編指令對(duì)應(yīng)著一條機(jī)器語言指令,因此匯編語言可直接利用和編指令對(duì)應(yīng)著一條機(jī)器語言指令,因此匯編語言可直接利用和發(fā)揮機(jī)器硬件系統(tǒng)的許多特性,如:寄存器,標(biāo)志位及一些特發(fā)揮機(jī)器硬件系統(tǒng)的許多特性,如:寄存器,標(biāo)志位及一些特殊指令等,能提高編程的質(zhì)量和運(yùn)行速度,且占用內(nèi)存少。殊指令等,能提高編程的質(zhì)量和運(yùn)行速度,且占用內(nèi)存少。一般如:系統(tǒng)軟件、實(shí)時(shí)控制系統(tǒng)、智能化儀器、儀表軟件等一般如:系統(tǒng)軟件、實(shí)時(shí)控制系統(tǒng)、智能化儀器、儀表軟件等對(duì)時(shí)間和存儲(chǔ)容量要求較高的程序常用匯編語言書寫。對(duì)時(shí)間和存儲(chǔ)容量要求較高的程序常用匯編語言書寫。2021-11-1143、高級(jí)語言 高級(jí)語言是一種面向問題或過程的語言。它是
5、一種接近于自然語言和數(shù)學(xué)算法的語言,與機(jī)器硬件無關(guān),用戶不必了解所有計(jì)算機(jī)的硬件和指令系統(tǒng)。高級(jí)語言不但直觀、易學(xué)且通用性強(qiáng)可移植性好。 高級(jí)語言編寫的程序需要由編譯程序或解釋程序翻譯成對(duì)應(yīng)的目標(biāo)程序,機(jī)器方可接受。但由于高級(jí)語言與機(jī)器語言不是一一對(duì)應(yīng)的,往往一條高級(jí)語言指令對(duì)應(yīng)著多條機(jī)器語言指令,因此翻譯的時(shí)間長、目標(biāo)程序長、占用空間大、執(zhí)行速度慢。 2021-11-1153.4.2 3.4.2 匯編程序與偽指令匯編程序與偽指令1、匯編程序 匯編源程序必須“翻譯”成目標(biāo)程序,方可被CPU識(shí)別、執(zhí)行,這個(gè)翻譯的過程稱為匯編。匯編工作一般由計(jì)算機(jī)的系統(tǒng)軟件匯編程序來完成的。 匯編程序除了可將匯編
6、源程序翻譯成目標(biāo)程序,還可根據(jù)程序要求安排目標(biāo)程序的存放地址、分配存儲(chǔ)空間、語法檢查,若有錯(cuò)誤給出錯(cuò)誤信息等。 2021-11-1162 2、偽指令、偽指令 在匯編源程序的過程中,有一些指令只是幫助匯編在匯編源程序的過程中,有一些指令只是幫助匯編源程序的,它們是控制匯編用的特殊指令,不屬于指源程序的,它們是控制匯編用的特殊指令,不屬于指令系統(tǒng),不要求計(jì)算機(jī)做任何操作,不產(chǎn)生對(duì)應(yīng)的機(jī)令系統(tǒng),不要求計(jì)算機(jī)做任何操作,不產(chǎn)生對(duì)應(yīng)的機(jī)器碼,不影響程序的執(zhí)行,這種指令被稱為偽指令。器碼,不影響程序的執(zhí)行,這種指令被稱為偽指令。 偽指令主要用來指定程序或數(shù)據(jù)的起始位置,給出偽指令主要用來指定程序或數(shù)據(jù)的起
7、始位置,給出一些連續(xù)存放數(shù)據(jù)確定地址,或?yàn)橹虚g運(yùn)算結(jié)果保留一些連續(xù)存放數(shù)據(jù)確定地址,或?yàn)橹虚g運(yùn)算結(jié)果保留一部分存儲(chǔ)空間及表示源程序結(jié)束等。一部分存儲(chǔ)空間及表示源程序結(jié)束等。 下面介紹幾種常用的基本偽指令:下面介紹幾種常用的基本偽指令: 2021-11-117 1 1) ORGORG偽指令偽指令 (Origin)(Origin) 通常用于源程序的開始處,用來規(guī)定目標(biāo)程序的通常用于源程序的開始處,用來規(guī)定目標(biāo)程序的 起始地址起始地址 格式:格式:ORG addr16 ;addr16ORG addr16 ;addr16是是1616位絕對(duì)地址位絕對(duì)地址, , 可用標(biāo)號(hào)或表達(dá)式表示。可用標(biāo)號(hào)或表達(dá)式表示
8、。如:如:ORG 1000H ORG 1000H ;將程序的起始地址定為;將程序的起始地址定為1000H1000H 2) ENDEND偽指令偽指令 ENDEND語句放在源程序結(jié)束的地方,用來告訴匯編程語句放在源程序結(jié)束的地方,用來告訴匯編程序源程序到此結(jié)束,對(duì)后面的指令都不用匯編。序源程序到此結(jié)束,對(duì)后面的指令都不用匯編。 格式:格式: ENDEND 注:注:ENDEND語句不得有標(biāo)號(hào)語句不得有標(biāo)號(hào)2021-11-1183 3) EQUEQU偽指令偽指令 ( (EQUEQUate)ate) 賦值偽指令,把一個(gè)表達(dá)式或特殊的匯編符號(hào)賦予賦值偽指令,把一個(gè)表達(dá)式或特殊的匯編符號(hào)賦予規(guī)定的名稱。規(guī)定
9、的名稱。 格式:格式: 符號(hào)名稱符號(hào)名稱 EQU EQU 表達(dá)式表達(dá)式/ /特殊匯編符號(hào)特殊匯編符號(hào) 例:例: SGSGEQUEQUR0 ; SGR0 ; SG與與R0R0等價(jià)等價(jià)DEDEEQUEQU40H 40H ; DEDE與與40H40H等值等值MOV AMOV A,SGSG; (R0 (R0)AAMOV R7MOV R7,#DE #DE ; #40H R7 #40H R7 MOV SG, R7 ; #40H R0MOV SG, R7 ; #40H R0 注:匯編后,注:匯編后,EQUEQU左邊的符號(hào)名稱就等同于其右邊的左邊的符號(hào)名稱就等同于其右邊的表達(dá)式或匯編符號(hào),這樣符號(hào)名稱就可以作
10、為立即數(shù)表達(dá)式或匯編符號(hào),這樣符號(hào)名稱就可以作為立即數(shù)或地址來使用。且在整個(gè)程序中不能再改變?;虻刂穪硎褂谩G以谡麄€(gè)程序中不能再改變。2021-11-1194) SET偽指令 類似于EQU,也是用一個(gè)表達(dá)式的值命名一個(gè)符號(hào),區(qū)別在于以后可用另一個(gè)SET偽指令對(duì)定義過的符號(hào)重新定義。 格式: 符號(hào)名稱 SET 表達(dá)式 如: VALU SET 1 ; VALU=1 REG1 SET R1; 把R1賦給REG1 VALU SET VALU+1;重新定義VALU 2021-11-11105) BIT偽指令 把一個(gè)位地址賦予規(guī)定的符號(hào)名稱,定義后不得重新定義。 格式: 符號(hào)地址 BIT 位地址 如: F
11、LAG BIT F0 AI BIT P1.0DATA偽指令 把片內(nèi)的數(shù)據(jù)地址賦予所規(guī)定的符號(hào)。片內(nèi)的數(shù)據(jù)地址指的是內(nèi)存00H7FH或位于80HFFH的特殊功能寄存器,定義好的符號(hào)不得重新定義。 格式: 符號(hào)地址 DATA 數(shù)據(jù)地址 如: RES DATA 30H;定義符號(hào)RES為內(nèi)存地址30H PORT0 DATA 80H;定義符號(hào)PORT0為SFR中P02021-11-11117 7) DBDB偽指令(偽指令(Define ByteDefine Byte) 從指定單元開始定義(存儲(chǔ))若干個(gè)字節(jié)的數(shù)據(jù)從指定單元開始定義(存儲(chǔ))若干個(gè)字節(jié)的數(shù)據(jù)或或ASCIIASCII碼字符,常用于定義數(shù)據(jù)常數(shù)表
12、。碼字符,常用于定義數(shù)據(jù)常數(shù)表。格式:格式: 【標(biāo)號(hào):標(biāo)號(hào):】 DB DB 表達(dá)式列表表達(dá)式列表 如如: : PRE:DBPRE:DB34H34H,0DEH0DEH,AA,BB RES:DB RES:DBpress any key to continue press any key to continue 注:注:ROMROM中,表達(dá)式列表中的每個(gè)字節(jié)依次存放在中,表達(dá)式列表中的每個(gè)字節(jié)依次存放在從標(biāo)號(hào)地址開始的各個(gè)單元中。列表中的各項(xiàng)是一列從標(biāo)號(hào)地址開始的各個(gè)單元中。列表中的各項(xiàng)是一列由逗號(hào)分開的一個(gè)或多個(gè)字節(jié)值或串。由逗號(hào)分開的一個(gè)或多個(gè)字節(jié)值或串。2021-11-11128 8)DWDW
13、偽指令(偽指令(Define WordDefine Word) 從指定單元開始定義(存儲(chǔ))若干個(gè)字的數(shù)據(jù)或從指定單元開始定義(存儲(chǔ))若干個(gè)字的數(shù)據(jù)或ASCIIASCII碼字符。碼字符。 格式:格式:【標(biāo)號(hào):標(biāo)號(hào):】DW DW 字常數(shù)或字常數(shù)或ASCIIASCII字符字符 如:如: DWDW1234H1234H,BBDWDW 0AH 0AH,20209 9)DSDS偽指令偽指令 以字節(jié)為單位保留空間。以字節(jié)為單位保留空間。DSDS語句從當(dāng)前地址開始保語句從當(dāng)前地址開始保留空間,空間的大小由表達(dá)式的值來確定。留空間,空間的大小由表達(dá)式的值來確定。 格式:格式: 【標(biāo)號(hào):標(biāo)號(hào):】 DS DS 表達(dá)式
14、表達(dá)式 如:如:SUM: DS 20 SUM: DS 20 ;從標(biāo)號(hào);從標(biāo)號(hào)SUMSUM代表的地址開始,代表的地址開始, 保留連續(xù)的保留連續(xù)的2020個(gè)字節(jié)單元。個(gè)字節(jié)單元。 2021-11-11133.5 3.5 基本程序設(shè)計(jì)方法基本程序設(shè)計(jì)方法 3.5.1 3.5.1 程序的基本結(jié)構(gòu)程序的基本結(jié)構(gòu)1 1、分析問題(包括硬件、軟件系統(tǒng)分析),抽象出、分析問題(包括硬件、軟件系統(tǒng)分析),抽象出 描述的數(shù)學(xué)模型;描述的數(shù)學(xué)模型;2 2、確定解決問題的算法和工作步驟;、確定解決問題的算法和工作步驟;3 3、根據(jù)算法繪制程序流程圖;、根據(jù)算法繪制程序流程圖;4 4、分配存儲(chǔ)空間,確定程序與數(shù)據(jù)區(qū)存放
15、地址;、分配存儲(chǔ)空間,確定程序與數(shù)據(jù)區(qū)存放地址;5 5、編寫源程序;、編寫源程序;6 6、靜態(tài)檢查;、靜態(tài)檢查;7 7、上機(jī)調(diào)試、修改,最終確定程序。、上機(jī)調(diào)試、修改,最終確定程序。2021-11-1114n 有關(guān)流程圖中符號(hào)表示:開始、結(jié)束圓角矩形工作任務(wù)矩形判斷分支菱形程序流向箭頭程序連接開始結(jié)束n 程序的基本算法結(jié)構(gòu)有3種: 順序結(jié)構(gòu) 分支結(jié)構(gòu)(選擇) 循環(huán)結(jié)構(gòu)2021-11-1115 3.5.2 順序結(jié)構(gòu)程序設(shè)計(jì) 順序結(jié)構(gòu)是最簡單的一種基本結(jié)構(gòu)。若一個(gè)待解決的問題可分解成若干個(gè)簡單的操作步驟,并可由這些操作按照一定的順序構(gòu)成解決問題的算法,則可用簡單的順序結(jié)構(gòu)來進(jìn)行程序設(shè)計(jì)。 順序結(jié)構(gòu)
16、圖ab A B2021-11-1116開始將待轉(zhuǎn)換的數(shù)據(jù)送入A A除以100將A中得到的百位數(shù)取出另存結(jié)束A中十位及B中個(gè)位取出另存余數(shù)除10Org 0000hLjmp Main org 0100hMain :mov A ,R1 mov B ,#100 div AB mov 30H,A mov A ,B mov B ,#10 div AB mov 31H ,A mov 32H ,B sjmp $例3.27:編制單字節(jié)BCD碼轉(zhuǎn)換程序2021-11-1117 3.5.3 3.5.3 分支(選擇)結(jié)構(gòu)程序設(shè)計(jì) 在實(shí)際程序設(shè)計(jì)時(shí),有很多情況需要程序按照給定條件進(jìn)行分支。分支程序可根據(jù)要求判斷某一變量
17、當(dāng)前所處之狀態(tài),根據(jù)判斷結(jié)果來改變程序執(zhí)行流向。編寫分支程序主要在于正確使用轉(zhuǎn)移指令。分支程序有:單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)、多分支結(jié)構(gòu)(散轉(zhuǎn))。 在編寫分支程序時(shí),51指令系統(tǒng)提供了豐富的控制轉(zhuǎn)移指令,如:JZ(JNZ)、CJNE、JC(JNC)及JB(JNB)等。2021-11-1118K=?程序段nn0程序段1多分支結(jié)構(gòu)程序段01條件成立?程序段BYN程序段A雙分支結(jié)構(gòu)條件成立?下條指令程序段A單分支結(jié)構(gòu)YN2021-11-1119例3.28:假設(shè)NUM單元中存放的是經(jīng)過處理的數(shù)據(jù),若數(shù)值在099之間,則下圖中P1.1口所接的LED燈亮;若數(shù)值在100180之間,則無動(dòng)作(燈滅);若在181
18、255之間,則P1.0口所接之燈亮。P1.0P1.1P1.2VCC2021-11-1120NUM100NUM100?y=x+50y=20Hy=x0開始存y 即y 30h結(jié)束例3.28流程圖2021-11-1121 ORG 1000HSTART:MOV A,30H JZ NEXT ;x=0,轉(zhuǎn)移 ANL A,#80H ;保留符號(hào)位 JZ ED ;x0,轉(zhuǎn)移 MOV A,#05H ;x0,不轉(zhuǎn)移 ADD A,30H MOV 30H,A SJMP ED NEXT:MOV 30H,#20H ED:SJMP $2021-11-1122 3.5.4 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 編寫程序時(shí),當(dāng)需要將同一組操作重復(fù)多次
19、時(shí),應(yīng)采用循環(huán)結(jié)構(gòu),以簡化程序,縮短長度和存儲(chǔ)空間。循環(huán)程序一般由3部分構(gòu)成: 置循環(huán)初值; 循環(huán)體:重復(fù)執(zhí)行部分; 循環(huán)控制部分:參數(shù)修改和依據(jù)結(jié)束條件判定循環(huán) 是否結(jié)束。 循環(huán)程序的結(jié)構(gòu)一般有兩種:until直到型:先執(zhí)行循環(huán)體一次,再判斷條件,條 件不成立則跳出循環(huán);while當(dāng)型:先判斷條件,條件成立再執(zhí)行循環(huán)體;2021-11-1123設(shè)置循環(huán)初值循環(huán)處理循環(huán)修改循環(huán)結(jié)束?NY(a)直到型循環(huán)設(shè)置循環(huán)初值循環(huán)處理循環(huán)修改循環(huán)結(jié)束?YN(b)當(dāng)型循環(huán)2021-11-1124例3-29 : 50ms延時(shí)子程序。設(shè)晶振頻率為12MHz,則機(jī)器周期為1us。DEL: MOV R7,#200 ;1MCDEL1:MOV R6,#123 ;1MC NOP ;1MC DJNZ R6,$ ;2MC DJNZ R7,DEL1 ;2MC RET ;2MC延時(shí)時(shí)間:t=1+200(1+1+2*123)+2+2 50000us=50ms2021-11-1125 3.5.5 3.5.5 子程序結(jié)構(gòu)設(shè)計(jì)子程序結(jié)構(gòu)設(shè)計(jì) 將反復(fù)出現(xiàn)的程序段編成一個(gè)獨(dú)立的程序段存放在內(nèi)存中,它能夠完成某一特定任務(wù),可被重復(fù)調(diào)用稱為子程序。恰當(dāng)?shù)氖褂米映绦蚩墒拐麄€(gè)程序結(jié)構(gòu)清楚、可讀性強(qiáng),且減少源程序
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 冷作外包合同范本
- 凈化車間合同范本
- 兒童套裝采購合同范本
- 修繕祖墳合同范本
- 制作標(biāo)語購銷合同范本
- 聘請(qǐng)?jiān)O(shè)計(jì)師合同范本
- 保證合同范本模板
- 代理飲料合同范本
- 劃撥土地房屋出售合同范本
- 加工柜體合同范本
- 胃癌影像診斷(共42張)
- 汽車維修合同管理制度
- 劍橋KET詞匯表(中英對(duì)照)
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能測(cè)試題庫附答案
- (完整)低壓配電柜技術(shù)規(guī)范
- 《通信原理》樊昌信曹麗娜編著第六版課件
- 2024年注冊(cè)安全工程師考試題庫【含答案】
- 第2課《樹立科學(xué)的世界觀》第2框《用科學(xué)世界觀指導(dǎo)人生發(fā)展》-【中職專用】《哲學(xué)與人生》同步課堂課件
- 《書籍裝幀設(shè)計(jì)》 課件 項(xiàng)目2 書籍裝幀設(shè)計(jì)要素
- 2024年益陽醫(yī)學(xué)高等??茖W(xué)校單招職業(yè)適應(yīng)性測(cè)試題庫及答案解析
- 妊娠期合并癥婦女的護(hù)理-妊娠合并心臟病的護(hù)理(婦產(chǎn)科護(hù)理課件)4EX
評(píng)論
0/150
提交評(píng)論