![第四章 匯編語(yǔ)言程序設(shè)計(jì)xin_第1頁(yè)](http://file4.renrendoc.com/view/14acbeef6b1ad83d0aef743e4c5a7410/14acbeef6b1ad83d0aef743e4c5a74101.gif)
![第四章 匯編語(yǔ)言程序設(shè)計(jì)xin_第2頁(yè)](http://file4.renrendoc.com/view/14acbeef6b1ad83d0aef743e4c5a7410/14acbeef6b1ad83d0aef743e4c5a74102.gif)
![第四章 匯編語(yǔ)言程序設(shè)計(jì)xin_第3頁(yè)](http://file4.renrendoc.com/view/14acbeef6b1ad83d0aef743e4c5a7410/14acbeef6b1ad83d0aef743e4c5a74103.gif)
![第四章 匯編語(yǔ)言程序設(shè)計(jì)xin_第4頁(yè)](http://file4.renrendoc.com/view/14acbeef6b1ad83d0aef743e4c5a7410/14acbeef6b1ad83d0aef743e4c5a74104.gif)
![第四章 匯編語(yǔ)言程序設(shè)計(jì)xin_第5頁(yè)](http://file4.renrendoc.com/view/14acbeef6b1ad83d0aef743e4c5a7410/14acbeef6b1ad83d0aef743e4c5a74105.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章匯編語(yǔ)言程序設(shè)計(jì)4.1匯編語(yǔ)言●
機(jī)器語(yǔ)言●匯編語(yǔ)言●
高級(jí)語(yǔ)言4.1.1
計(jì)算機(jī)的程序設(shè)計(jì)語(yǔ)言種類(lèi)一、機(jī)器語(yǔ)言
是一種能被計(jì)算機(jī)直接識(shí)別和執(zhí)行的機(jī)器級(jí)語(yǔ)言。有兩種二進(jìn)制和十六進(jìn)制兩種表示形式。
不易被人們識(shí)別和讀寫(xiě),不方便進(jìn)行程序設(shè)計(jì)。二、匯編語(yǔ)言
是一種代替機(jī)器語(yǔ)言進(jìn)行程序設(shè)計(jì)的語(yǔ)言,由助記符、保留字和偽指令等組成,易被人們識(shí)別和讀寫(xiě)。采用匯編語(yǔ)言編寫(xiě)的程序叫做匯編語(yǔ)言程序,不能直接被計(jì)算機(jī)執(zhí)行,必須通過(guò)編譯軟件翻譯成機(jī)器語(yǔ)言程序(即目標(biāo)代碼)才能被計(jì)算機(jī)執(zhí)行。采用匯編語(yǔ)言,用戶可直接操作到單片機(jī)內(nèi)部的存儲(chǔ)單元,適用于編寫(xiě)實(shí)時(shí)控制程序。地址機(jī)器語(yǔ)言匯編語(yǔ)言二進(jìn)制形式十六進(jìn)制2000H0111010000000101B7405HMOVA,#05H2002H0010010000001010B240AHADDA,#0AH2004H1111010100100000BF520HMOV20H,A2006H1000000011111110B80FEHSJMP$機(jī)器語(yǔ)言與匯編語(yǔ)言的形式三、高級(jí)語(yǔ)言相對(duì)于匯編語(yǔ)言,高級(jí)語(yǔ)言接近自然語(yǔ)言和數(shù)學(xué)公式的編程,與計(jì)算機(jī)的硬件結(jié)構(gòu)及指令系統(tǒng)無(wú)關(guān),能更好的描述各種算法,方便學(xué)習(xí)和編程。高級(jí)語(yǔ)言編譯生成的程序代碼一般比用匯編程序語(yǔ)言設(shè)計(jì)的程序代碼要長(zhǎng),執(zhí)行的速度也慢。所以匯編語(yǔ)言適合編寫(xiě)一些對(duì)速度和代碼長(zhǎng)度要求高的程序和直接控制硬件的程序。4.1.2
匯編語(yǔ)言格式標(biāo)號(hào):
操作碼
操作數(shù)
;注釋
標(biāo)號(hào):語(yǔ)句地址的標(biāo)志符號(hào),有如下規(guī)定長(zhǎng)度為1~8個(gè)ASCII字符;第1個(gè)字符必須是字母,其余為字母、數(shù)字或其他特定字符;不能使用系統(tǒng)關(guān)鍵字,如指令符、寄存器名等;后邊必須跟冒號(hào)2.操作碼●
表示指令的操作功能●為便于記憶,通常用與操作相應(yīng)的英文縮寫(xiě)表示,如加法用ADD,減法用SUBB,傳送用MOV等,編譯時(shí)還原成一定的二進(jìn)制代碼。3.操作數(shù)●
指參加操作的數(shù)據(jù)或數(shù)據(jù)的地址●
操作數(shù)的個(gè)數(shù)無(wú)操作數(shù)——操作數(shù)隱含在操作助記符中單操作數(shù)兩操作數(shù)三操作數(shù)●
在兩操作數(shù)的指令中,通常目的操作數(shù)寫(xiě)在左邊,源操作數(shù)寫(xiě)在右邊。
●
操作數(shù)之間用逗號(hào)隔開(kāi)?!?/p>
操作數(shù)的二進(jìn)制、十進(jìn)制和十六進(jìn)制形式MOVA,#00110101B;A←53ADDA,#20 ;A←53+20MOVR0,#20H ;R0←20HMOVR1,#0BFH ;R1←BFH4.注釋●
用于注解指令或程序,便于編寫(xiě)和閱讀程序;●任選項(xiàng);●以分號(hào)開(kāi)頭,一行不夠?qū)懚枇砥鹨恍袝r(shí)也必須以分號(hào)開(kāi)頭。4.1.3
匯編語(yǔ)言的指令構(gòu)成指令性語(yǔ)句第三章所講的111條指令的助記符語(yǔ)句,通過(guò)編譯軟件匯編成目標(biāo)代碼(機(jī)器碼)。指示性語(yǔ)句又稱為偽指令,在匯編時(shí)不產(chǎn)生機(jī)器碼,主要用來(lái)完成一些特殊操作。1、ORG起始匯編常用偽指令定位程序的起始地址。用于指明程序段或數(shù)據(jù)段從ROM的什么位置開(kāi)始存放。格式為:ORG地址值(十六進(jìn)制表示)如ORG0000H在一個(gè)程序中,可以多次使用ORG規(guī)定不同程序段或數(shù)據(jù)段存放的起始地址,但要求地址值由小到大依序排列,不允許空間重疊。2、END結(jié)束匯編表示匯編語(yǔ)言源程序結(jié)束。
注意:一個(gè)源程序只能有一個(gè)END語(yǔ)句,必須放在整個(gè)程序的末尾。3、EQU賦值偽指令調(diào)用格式為
字符名稱EQU數(shù)值或匯編符號(hào)把EQU右邊的“數(shù)據(jù)或匯編符號(hào)”賦給左邊的“字符名稱”?!白址Q”必須先賦值后使用,故該語(yǔ)句通常放在源程序的開(kāi)頭。 ORG0000HAAEQUR1A10EQU10H MOVA,AA;AA當(dāng)做R1使用MOVR0,A10;A10為8位直接地址...END4、DB字節(jié)定義偽指令從指定單元開(kāi)始定義(存儲(chǔ))若干個(gè)字節(jié)的數(shù)據(jù)或ASCII碼字符,常用于定義數(shù)據(jù)常數(shù)表。例: ORG 3000HTAB1:DB12H,0DEH DB‘5’,‘A’,‘a(chǎn)’12HDEH35H41H61H3000H3001H3002H3003H3004H5、DW字定義偽指令與DB相似,但用于定義字?jǐn)?shù)據(jù)。一個(gè)字在存儲(chǔ)器中占兩個(gè)字節(jié)。主要用來(lái)定義16位地址,高8位在前,低8位在后。例ORG3000HTAB2:DW1234H,5678H12H34H56H78H3000H3001H3002H3003H6、DS定義存儲(chǔ)空間偽指令格式為:DS表達(dá)式
用在存儲(chǔ)器中預(yù)留一定數(shù)量的字節(jié)單元,為以后存放數(shù)據(jù)。預(yù)留的單元數(shù)目由表達(dá)式的值決定。例ORG3000H TAB1:DB12H,34H
DS4H DB'5'12H34H--------35H3000H3001H3002H3003H3004H3005H3006H7、BIT位地址賦值偽指令格式為:字符名稱BIT位地址用于給位地址賦予符號(hào),經(jīng)賦值后可用該符號(hào)代替BIT后面的位地址。例: ABC BIT P1.1 QQ BIT P3.24.1.4
匯編語(yǔ)言程序中的文件源程序文件
匯編語(yǔ)言源程序是由匯編指令和偽指令組成的文件,其擴(kuò)展名為.ASM
源程序編輯完后只有轉(zhuǎn)換為機(jī)器碼表示的目標(biāo)程序單片機(jī)才能執(zhí)行,這個(gè)轉(zhuǎn)換的過(guò)程稱為匯編。目標(biāo)程序文件
擴(kuò)展名為.HEX
4.2程序設(shè)計(jì)方法及技巧4.2.1編程步驟1.任務(wù)分析(硬件、軟件系統(tǒng)分析)2.確定算法和工作步驟3.程序總體設(shè)計(jì)和流程圖繪制4.分配內(nèi)存,確定程序與數(shù)據(jù)區(qū)存放地址5.編寫(xiě)源程序6.調(diào)試、修改,最終確定程序。流程圖是編程的基礎(chǔ)和條件,繪制一個(gè)好的流程圖,是程序設(shè)計(jì)的一項(xiàng)重要內(nèi)容。對(duì)于簡(jiǎn)單的應(yīng)用程序,可以不畫(huà)流程圖。但是當(dāng)程序較為復(fù)雜時(shí),繪制流程圖是一個(gè)良好的編程習(xí)慣。開(kāi)始處理框判斷結(jié)束程序流向流程圖符號(hào)4.3基本的程序結(jié)構(gòu)順序程序分支程序循環(huán)程序查表程序子程序4.3.1順序程序順序程序執(zhí)行流程是按指令在存儲(chǔ)器中的存放順序進(jìn)行的。例2:將片內(nèi)RAM104、105單元中的內(nèi)容分別傳送到片外RAM104H、105H單元中。一、數(shù)據(jù)傳送例1:內(nèi)部RAM的2AH~2EH單元中存儲(chǔ)的數(shù)據(jù)如圖所示。試編寫(xiě)程序?qū)崿F(xiàn)圖示的數(shù)據(jù)傳送結(jié)果。MOVA,2EHMOV2EH,2DHMOV2DH,2CHMOV2CH,2BHMOV2BH,#00HORG0000HMOVR0,#68HMOVA,@R0 ;片內(nèi)RAM104單元內(nèi)容送累加器MOVDPTR,#0104HMOVX@DPTR,A ;完成片內(nèi)RAM104單元內(nèi)容送片 ;外104H單元中INCR0MOVA,@R0 ;片內(nèi)RAM105單元內(nèi)容送累加器INCDPTRMOVX@DPTR,A ;完成片內(nèi)RAM105單元內(nèi)容送片 ;外105H單元中SJMP$ ;等待END ;結(jié)束二、簡(jiǎn)單運(yùn)算由于51指令系統(tǒng)中只有單字節(jié)加法指令,因此對(duì)于多字節(jié)的相加運(yùn)算必須從低位字節(jié)開(kāi)始分字節(jié)進(jìn)行。除最低字節(jié)可以使用ADD指令外,其他字節(jié)相加時(shí)要把低字節(jié)的進(jìn)位考慮進(jìn)去,這時(shí)就應(yīng)該使用ADDC指令。例3:雙字節(jié)無(wú)符號(hào)數(shù)加法。設(shè)被加數(shù)存放在內(nèi)部RAM的51H、50H單元,加數(shù)存放在內(nèi)部RAM的61H、60H單元,相加的結(jié)果存放在內(nèi)部RAM的51H、50H單元,進(jìn)位存放在位尋址區(qū)的00H位中。
ROG0000HMOVR0,#50H ;被加數(shù)的低字節(jié)地址 MOVR1,#60H ;加數(shù)的低字節(jié)地址 MOVA,@R0 ;取被加數(shù)低字節(jié)ADDA,@R1 ;加上加數(shù)低字節(jié)MOV@R0,A ;保存低字節(jié)相加結(jié)果INCR0 ;指向被加數(shù)高字節(jié)INCR1 ;指向加數(shù)高字節(jié)MOVA,@R0 ;取被加數(shù)高字節(jié)ADDCA,@R1 ;加上加數(shù)高字節(jié)(帶進(jìn)位加)MOV@R0,A ;存高字節(jié)相加結(jié)果MOV00H,C ;保存進(jìn)位。
SJMP$ ;等待END4.3.2分支程序一.簡(jiǎn)單分支程序NY跳轉(zhuǎn)至目標(biāo)程序條件滿足?順序執(zhí)行例4:已知片內(nèi)RAM40H開(kāi)始的兩個(gè)單元中各存放有一個(gè)8位無(wú)符號(hào)二進(jìn)制數(shù),要求找出其中的大數(shù)并存入片內(nèi)RAM50H單元中。分析:將兩數(shù)相減,用進(jìn)位標(biāo)志C做為分支轉(zhuǎn)移的條件就很容易地找出其中的大數(shù)。 ORG0000H CLRC MOVR0,#40H ;第一個(gè)數(shù)地址送R0中 MOVA,@R0 ;取第一個(gè)數(shù) INCR0 ;R0指向第二個(gè)數(shù)地址 SUBBA,@R0;兩數(shù)比較 JCBIG;第二個(gè)數(shù)大(C=1)轉(zhuǎn)BIG DECR0;R0指向第一個(gè)數(shù)地址BIG: MOV50H,@R0;存大數(shù) SJMP$;等待 END;結(jié)束例5:設(shè)變量x以補(bǔ)碼的形式存放在片內(nèi)RAM的30H單元,變量y與x的關(guān)系是:當(dāng)x大于0時(shí),y=x;當(dāng)x=0時(shí),y=20H;當(dāng)x小于0時(shí),y=x+5。編制程序,根據(jù)x的大小求y并送回原單元。START:MOVA,30HJZNEXTANLA,#80H;判斷符號(hào)位 JZLPMOVA,#05HADDA,30HMOV30H,ASJMPLPNEXT:MOV30H,#20HLP:SJMP$
二.多分支程序(又稱為散轉(zhuǎn)程序)通常采用查散轉(zhuǎn)表法,按分支號(hào)進(jìn)行轉(zhuǎn)移。使用的指令是JMP@A+DPTR
并配合AJMP或LJMP查散轉(zhuǎn)表法的多分支程序結(jié)構(gòu):…… MOVDPTR,#TABLE;散轉(zhuǎn)表首地址(基址)
RLA
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60086-4:2025 CMV EN Primary batteries - Part 4: Safety of lithium batteries
- 菊花種植收購(gòu)事宜合同
- 基于大數(shù)據(jù)驅(qū)動(dòng)的企業(yè)轉(zhuǎn)型升級(jí)合作協(xié)議
- 企業(yè)廣告牌制作合同
- 塔吊租賃協(xié)議樣本
- 環(huán)境監(jiān)測(cè)與評(píng)估合同
- 防雷裝置檢測(cè)技術(shù)服務(wù)合同
- 場(chǎng)地轉(zhuǎn)讓合同協(xié)議書(shū)
- 房地產(chǎn)項(xiàng)目合作協(xié)議
- 自動(dòng)化生產(chǎn)線改造項(xiàng)目合作合同
- 光纜線路施工安全協(xié)議書(shū)范本
- 《我國(guó)國(guó)有企業(yè)股權(quán)融資效率實(shí)證研究》相關(guān)概念及國(guó)內(nèi)外文獻(xiàn)綜述2600字
- 2025年湖南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 成本合約規(guī)劃培訓(xùn)
- 交通法規(guī)教育課件
- 小學(xué)校長(zhǎng)任期五年工作目標(biāo)(2024年-2029年)
- 2022-2024年浙江中考英語(yǔ)試題匯編:閱讀理解(說(shuō)明文)教師版
- 小學(xué)生思政課課件
- 2016屆高三備考建議
- 北師大版六年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)表格式教案
- 2021年阿里巴巴全球數(shù)學(xué)競(jìng)賽預(yù)選賽試題及參考答案
評(píng)論
0/150
提交評(píng)論