




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)培訓(xùn)四匯編語言程序設(shè)計(jì)匯編語言簡介匯編語言格式 計(jì)算機(jī)所能執(zhí)行的每條指令都對應(yīng)一組二進(jìn)制代碼。 為了容易理解和記憶計(jì)算機(jī)的指令, 人們用一些英語的單詞和字符以及數(shù)字作為助記符來描述每一條指令的功能。 用助記符描述的指令系統(tǒng), 稱為機(jī)器的匯編語言系統(tǒng), 簡稱匯編語言。 匯編語言也是面向機(jī)器的, 每種計(jì)算機(jī)系統(tǒng)也都有它自己的匯編語言, 用匯編語言編寫的程序, 稱為匯編語言源程序或匯編源程序。 由25個(gè)英文字母組成的助記符至少一個(gè)空格用“,”隔開,操作個(gè)數(shù)可為無,1,2,3 由操作助記符和操作數(shù)字段組成匯編指令指能匯編成機(jī)器語言代碼的指令。 格式:操作碼 操作數(shù)1, 操作數(shù)2 ,操作數(shù)32匯編
2、偽指令 偽指令:匯編時(shí)不產(chǎn)生機(jī)器語言代碼的指令,僅提供匯編控制信息。一、定位偽指令 ORG m m:一般為十六進(jìn)制數(shù)。 m指出在該偽指令后的指令的匯編地址,即生成的機(jī)器指令起始存貯器地址。顯然,當(dāng)使用多條ORG m偽指令時(shí),應(yīng)注意其后生成的機(jī)器指令存放地址不應(yīng)重疊。例如: ORG 0START: SJMP MAIN ORG 0BH LJMP PTFO ORG 40H MAIN:3二、定義字節(jié)偽指令 標(biāo)號: DB X1、 X2 Xn例如: ORG 1000HDB 0AAH SR-DATA:DB25,25H DZX-DATA:DBMCS-51經(jīng)匯編后,從地址1000H處存貯器的內(nèi)容為:(1000H
3、)= AAH(1001H)= 19H(1002H)= 25H(1003H)= 4DH(1004H)= 43H(1005H)= 53H(1006H)= 2DH(1007H)= 35H(1008H)= 31H4三、字定義偽指令 標(biāo)號: DW Y1、 Y2 Yn 通知匯編程序從當(dāng)前ROM地址開始,保留存貯單元,并存入DW后面的數(shù)據(jù)。存放時(shí)高8位在前,低8位在后。例如: ORG 1000H DW1234HSR_DATA:DW56H,2000經(jīng)匯編后,從地址1000H處存貯器的內(nèi)容為:(1000H)= 12H(1001H)= 34H(1002H)= 00H(1003H)= 56H(1004H)= 07H
4、(1005H)= D0H5四、EQU 賦值偽指令 字符名稱 EQU 項(xiàng)(數(shù)或匯編符號) EQU偽指令是把“項(xiàng)”賦給“字符名稱”,注意這里的“字符名稱”不同于標(biāo)號(其后沒有冒號),但它是必須的。用EQU賦過值的符號名可以用作數(shù)據(jù)地址、代碼地址、位地址或是一個(gè)立即數(shù)。 例如: AAEQUR1MOVA,AA D10EQU10ADD_YEQU07ABHMOVA,D10LCALLADD_Y6五、DS定義存貯空間偽指令 DS 表達(dá)式 在匯編時(shí),從指定地址開始保留DS之后“表達(dá)式”的值所規(guī)定的存貯單元。 例如:ORG1000HDS07HDB20H,20 DW12H 經(jīng)匯編后,從地址1000H開始保留7個(gè)單元
5、,然后從1007H處存貯器的內(nèi)容為:(1007H)= 20H(1008H)= 14H(1009H)= 00H(100AH)= 12H7六、DATA數(shù)據(jù)地址賦值偽指令 字符名稱 DATA 表達(dá)式 這里的“字符名稱”與標(biāo)號不同(其后沒有冒號),但它是必須的,其功能是把“表達(dá)式”的值賦給左邊的“字符名稱”。 DATA偽指令與EQU偽指令的主要區(qū)別是:EQU定義的“字符名稱”必須先定義后使用,而DATA定義的“字符名稱”沒有這種限制,故DATA偽指令通常用在源程序的開頭或末尾。 例如: ORG0100H AA DATA 35H DPTRA DATA0AA00H MOVA,AA ;(35H) A MOV
6、DPTR,#DPTRA ;0AA00H DPTR8七、BIT定義位地址符號偽指令 字符名稱 BIT 位地址 這里的“字符名稱”與標(biāo)號不同(其后沒有冒號),但它是必須的,其功能是把BIT之后的“位地址”值賦給“字符名稱”。 例如:P11BITP1.1A2BIT02HMOVC,P11MOVA2,C八、匯編結(jié)束偽指令 END指出匯編結(jié)束,其后即使還有指令,匯編程序也不作處理。9匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)方法 程序設(shè)計(jì)步驟根據(jù)設(shè)計(jì)任務(wù)要求,采用匯編語言編制程序的過程。應(yīng)用程序設(shè)計(jì)步驟: 1. 擬定任務(wù)書 2. 建立數(shù)學(xué)模型 3. 建立算法 4. 繪制程序流程圖 5. 編制匯編語言源程序 6. 上
7、機(jī)調(diào)試 注意:匯編調(diào)試需要多次試驗(yàn),往往調(diào)試占整個(gè)任務(wù)的大部分時(shí)間10程序設(shè)計(jì)要求及基本方法可靠性高、可讀性好、效率高、占用存儲容量小和執(zhí)行速度快 匯編程序結(jié)構(gòu)設(shè)計(jì)的基本方法: 匯編程序結(jié)構(gòu)設(shè)計(jì)的基本要求: 1.順序程序的設(shè)計(jì) 2.分支程序設(shè)計(jì) 3.循環(huán)程序設(shè)計(jì) 4.子程序設(shè)計(jì)5.查表程序設(shè)計(jì)6.散轉(zhuǎn)程序設(shè)計(jì)11一、順序程序 順序程序是最簡單的程序結(jié)構(gòu),在順序程序中沒有任何的轉(zhuǎn)移指令,以下是一個(gè)典型的例子。例1:字節(jié)(雙字)加法。將內(nèi)部RAM 30H開始的4個(gè)單元中存放的4字節(jié)十六進(jìn)制數(shù)和內(nèi)部RAM 40H單元開始的4個(gè)單元中存放的4字節(jié)十六進(jìn)制數(shù)相加,結(jié)果存放到40H開始的單元中。(如0a0
8、ab234fh存放在片內(nèi)RAM30h開始的4個(gè)單元如圖所示)30H31H33H32H加數(shù) 1 存放處4FH23HABHA0H12題意分析示意圖 (1) 題意分析。 題目的要求如圖所示。30H31H33H32H加數(shù) 1 存放處4FH23HABHA0H43H42H41H40H 7BH 56H 80H E8H加數(shù) 2 存放處43H42H41H40HCAH79H2BH89H相加結(jié)果存放處A0AB234FE880567B892B79CA113 ORG0200HMOVA,30HADD A,40HMOV40H,A;最低字節(jié)加法并送結(jié)果MOVA,31HADDC A,41HMOV41H,A;第二字節(jié)加法并送結(jié)果
9、(2) 匯編語言源程序。按照雙字節(jié)加法的思路,實(shí)現(xiàn)4字節(jié)加法的源程序如下: 14 MOVA,32HADDC A,42HMOV42H,A;第三字節(jié)加法并送結(jié)果MOVA,33HADDCA,43HMOV43H,A;第四字節(jié)加法并送結(jié)果,進(jìn)位 位在CY中 SJMP $END15分支程序分支程序可以分為:單分支雙分支多分支16單分支單分支程序的基本結(jié)構(gòu):條件成立?程序段下條指令NY17雙分支雙分支程序的基本結(jié)構(gòu):程序段1條件成立?程序段2NY18多分支多分支程序的基本結(jié)構(gòu):程序段2條件N=?程序段N-10N程序段1程序段N1N-119例:如圖所示,設(shè)計(jì)一段程序?qū)崿F(xiàn)功能:如果(A)中1的個(gè)數(shù)為奇數(shù),所有的
10、二極管發(fā)光;如果全0,則只讓VD0-VD3發(fā)光;否則全滅。單分支程序舉例20開始位P=1?(A)=0?P2FFHP200HP20FH結(jié)束YYNN ORG 0200H JB P,JISHU JZ QUAN MOV P2,#00H SJMP TOendJISHU:MOV P2,#0FFH SJMP TOendQUAN:MOV P2,#0FHTOend: SJMP $ END流程圖:源程序:判斷奇偶標(biāo)志位的值判斷(A)的值是否為0(A)有偶數(shù)個(gè)1,二極管滅(A)有奇數(shù)個(gè)1,二極管全亮(A)為0,VD0-VD3亮注意:在MCS-51單片機(jī)中,實(shí)現(xiàn)單分支常用的指令有:JZ、JNZ、DJNZ、CJNE、J
11、C、JNC、JB、JNB、JBC等。虛線框代表一個(gè)單分支21雙分支程序設(shè)計(jì)例:內(nèi)部RAM的40H單元和50H單元各存放了一個(gè)8位無符號數(shù),請比較這兩個(gè)數(shù)的大小,比較結(jié)果用發(fā)光二極管顯示(LED為低有效): 若(40H)(50H),則P1.0管腳連接的LED1發(fā)光; 若(40H)(50H),則P1.1管腳連接的LED2發(fā)光。22 題意分析: 本例是典型的分支程序,根據(jù)兩個(gè)無符號數(shù)的比較結(jié)果(判斷條件),分別點(diǎn)亮相應(yīng)的發(fā)光二極管。比較兩個(gè)無符號數(shù)常用的方法是將兩個(gè)數(shù)相減,然后判斷有否借位CY。若CY=0,無借位,則XY;若CY=1,有借位,則XY。程序的流程圖如下圖所示。 23兩數(shù)比較流程圖XYX
12、Y,LED1點(diǎn)亮CY1? XY, YNLED2點(diǎn)亮開始結(jié)束24 源程序如下: X DATA 40H ;數(shù)據(jù)地址賦值偽指令DATA Y DATA 50H ORG1000H MOV A, X ;(X) A CLRC ;CY=0 SUBBA,Y ;帶借位減法,A- (Y)-CYA25 JC L1 ;CY=1,轉(zhuǎn)移到L1 CLRP1.0 ;CY=0,(40H)(50H),點(diǎn)亮P1.0 連 接的LED1 SJMP FIN ;直接跳轉(zhuǎn)到結(jié)束等待 L1:CLR P1.1 ;(40H)(A),則(A)(41H),然后和下一個(gè)字節(jié)進(jìn)行比較,依次類推,最后(A)必定是最大值。40H41H42H43H44H45H4
13、6H47H48H62開始R040H(數(shù)據(jù)區(qū)首地址)R207H(循環(huán)次數(shù))A(R0)(取第一個(gè)數(shù))R0(R0)+1(指向下一個(gè)數(shù))B (R0)結(jié)束AB?NYA (B)(R2)-1=0?48H(A)NY ORG1000H MOVR2,#07H MOVR0,#40H MOVA,R0LOOP:INCR0 MOVB,R0 CJNE A,B,NEXNEX: JNCNET MOVA,BNET: DJNZR2,LOOP MOV 48H,A SJMP$ END設(shè)定循環(huán)次數(shù)R1,R0作為數(shù)據(jù)指針,指向數(shù)據(jù)區(qū)第一個(gè)字節(jié)取出下一個(gè)字節(jié),存入B如果(A)(B),則(A)(B)次數(shù)到否,到則取出(A)48H63例:將片內(nèi)
14、RAM中20H-27H中的數(shù)據(jù)按照從小到大的順序重新排列。解題思路:見下圖RAM地址20H21H22H23H24H25H26H27H原始數(shù)據(jù)66H11H10H34H67H01H89HA0H101H11H10H34H67H66H89HA0H201H10H11H34H67H66H89HA0H301H10H11H34H67H66H89HA0H401H10H11H34H66H67H89HA0H501H10H11H34H66H67H89HA0H601H10H11H34H66H67H89HA0H701H10H11H34H66H67H89HA0H數(shù)據(jù)排序程序64R120H , R0 (R1)+1R3 08H
15、B(R1) ,R2 (R3)-1查找最小值并和(R1)單元互換R3-1=0?ENDR1 (R1)+1NY程序流程:65程序清單:ORG 1000HMAIN: MOV R1, #20H MOV R3, #08HLOOP1: MOV A, R1 ;R0(R1)+1 INC A MOV R0, A MOV A, R3 ; R2(R3)-1 DEC A MOV R2, A MOV B, R1 LOOP: MOV A, R0 CJNE A, B, MM MM: JNC SS ;如果AB跳轉(zhuǎn) MOV B, A MOV 28H, R0 ;28h紀(jì)錄最小值所在單元的編號 SS: INC R0 DJNZ R2,
16、 LOOP MOV R0, 28H ;最小值單元和20H單元內(nèi)容互換 MOV A, R1 ;數(shù)據(jù) MOV R0, A MOV R1, B INC R1 DJNZ R3, LOOP1 END663.定時(shí)程序單重循環(huán)延時(shí)例1:假設(shè)單片機(jī)的fosc=12MHz,計(jì)算單片機(jī)執(zhí)行下面程序消耗的時(shí)間。DELAY: MOV R5,#TIME ; 1機(jī)器周期 MM: NOP ; 1機(jī)器周期 DJNZ R5,MM ; 2機(jī)器周期 RET ; 2機(jī)器周期執(zhí)行完以上4條語句,所花時(shí)間:T=(1+(1+2)TIME)+2 1s推廣計(jì)算式:T(機(jī)器周期數(shù))=(循環(huán)體機(jī)器周期數(shù)) 循環(huán)次數(shù)+初始化機(jī)器周期數(shù)67多重循環(huán)延時(shí)例1:假設(shè)單片機(jī)的fosc=12MHz,計(jì)算單片機(jī)執(zhí)行下面程序消耗的時(shí)間。DELAY2: MOV R3,#TIME1 ;1機(jī)器周期 LOOP1: MOV R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國系桿錨行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國直聯(lián)式自吸泵行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國電熱毛巾烘干架行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國有源濾波補(bǔ)償裝置行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國分體無塵服行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2030年中國鬃數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國靜電粉末噴塑機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國鋁合金衣架數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國調(diào)音開關(guān)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國純銅異型材數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年員工規(guī)章制度具體內(nèi)容范本(三篇)
- 福建公安基礎(chǔ)知識真題匯編2
- 合格網(wǎng)約車出售協(xié)議書范文范本
- 2024年金融理財(cái)-特許金融分析CFA考試近5年真題附答案
- 2024橋式門式起重機(jī)大修項(xiàng)目及其技術(shù)標(biāo)準(zhǔn)
- 生物光合作用第1課課件-2024-2025學(xué)年北師大版生物七年級上冊
- 公路工程監(jiān)理工作指導(dǎo)手冊
- 人教版(PEP)英語六年級下冊-Unit 1 How tall are you?B Read and write 教案
- 第2課?玩泥巴(課件)科學(xué)一年級下冊
- 小學(xué)數(shù)學(xué)課堂有效教學(xué)現(xiàn)狀調(diào)查問卷分析報(bào)告
- 風(fēng)險(xiǎn)分級管控和隱患排查治理體系培訓(xùn)考試試題(附答案)
評論
0/150
提交評論