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

下載本文檔

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

文檔簡(jiǎn)介

1、第4章匯編語言程序設(shè)計(jì) 匯編語言的格式匯編語言的格式4.1 語句行的構(gòu)成語句行的構(gòu)成4.2 指示性語句指示性語句4.3 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例 4.4 4.1 匯編語言的格式匯編語言的格式 下面先介紹一個(gè)例子來說明下面先介紹一個(gè)例子來說明80C51匯匯編語言的格式。編語言的格式。 ORG 00H;定義程序的入口定義程序的入口 LJMP MAIN;跳轉(zhuǎn)至此程序入口跳轉(zhuǎn)至此程序入口 ORG 30H;本程序開始存放的地址本程序開始存放的地址COUNT EQU 04H ;定義符號(hào)定義符號(hào)COUNT MAIN: MOV DPTR,#BCD1;置置BCD1的地址指針的地址指針 MOV

2、 R0,#BCD11;置置BCD11的地址指針的地址指針 MOV R2,#COUNT;循環(huán)次數(shù)送至循環(huán)次數(shù)送至R2 LOP1:MOVA,#0 ;為變址尋址置為變址尋址置A的初值的初值 MOVC A,A+DPTR ;利用變址尋址從程序區(qū)取第一個(gè)利用變址尋址從程序區(qū)取第一個(gè) BCD數(shù)的第一個(gè)字節(jié)至累加器數(shù)的第一個(gè)字節(jié)至累加器A MOVR0,A;把數(shù)存至把數(shù)存至RAM區(qū)區(qū)BCD11處處 INCDPTR;修改地址指針修改地址指針 INCR0 DJNZR2,LOP1;未完循環(huán)未完循環(huán) MOVDPTR,#BCD2;為為BCD2置地址指針置地址指針 MOVR0,#BCD11;置已在置已在RAM中的第一個(gè)中的

3、第一個(gè)BCD數(shù)的數(shù)的 地址指針地址指針 MOVR1,#SUM;置存放和的地址指針置存放和的地址指針 MOVR3,#COUNT;置循環(huán)次數(shù)置循環(huán)次數(shù) LOP2:MOVA,#0;為變址尋址置為變址尋址置A的初值的初值 MOVCA,A+DPTR;用變址尋址取進(jìn)第二個(gè)用變址尋址取進(jìn)第二個(gè)BCD數(shù)的數(shù)的 第一個(gè)字節(jié)第一個(gè)字節(jié) ADDCA,R0;與第一個(gè)與第一個(gè)BCD數(shù)的相應(yīng)字節(jié)相加數(shù)的相應(yīng)字節(jié)相加 DAA;十進(jìn)制調(diào)整十進(jìn)制調(diào)整 MOVR1,A;存和存和 INCDPTR;修改地址指針修改地址指針 INCR0 INCR1 DJNZR3,LOP2;未完循環(huán)未完循環(huán) MOVA,#00H;清零累加器清零累加器A

4、ADDCA,#00H;與最后一次加法可能產(chǎn)生的進(jìn)位與最后一次加法可能產(chǎn)生的進(jìn)位 位相加位相加 MOVR1,A;存進(jìn)位位存進(jìn)位位 J1:JMPJ1;模擬暫停指令模擬暫停指令 ORG20H;規(guī)定存放預(yù)置數(shù)據(jù)的地址規(guī)定存放預(yù)置數(shù)據(jù)的地址BCD1EQU20H DB44H,55H,66H,77H;用用DB偽指令在程序區(qū)中預(yù)置數(shù)據(jù)偽指令在程序區(qū)中預(yù)置數(shù)據(jù)BCD2:DB55H,44H,55H,88H ORG60HBCD11EQU60H DS 4;在在RAM中預(yù)留空間以存放從程序中預(yù)留空間以存放從程序 區(qū)中取出的數(shù)據(jù)區(qū)中取出的數(shù)據(jù) ORG70HSUMEQU70H DS5;為和保留空間為和保留空間 END4.2

5、 語句行的構(gòu)成語句行的構(gòu)成 4.2.1 4.2.1 標(biāo)記標(biāo)記 1 1匯編語言的字符集匯編語言的字符集(1)字母)字母 包含大寫的英文字母:包含大寫的英文字母:ABCDXYZ;小寫的英文字母:小寫的英文字母:abcxyz。 (2 2)數(shù)字)數(shù)字 阿拉伯?dāng)?shù)字:阿拉伯?dāng)?shù)字:0123456789。 (3 3)特殊字符)特殊字符 圖圖4-1 匯編字符集中可打印字符匯編字符集中可打印字符 2 2界符界符 界符(界符(delimiters)是一些特殊字符,)是一些特殊字符,利用它們可以表明某個(gè)標(biāo)記的結(jié)束,它們利用它們可以表明某個(gè)標(biāo)記的結(jié)束,它們本身也有一定的意義,這一點(diǎn)就與分隔符本身也有一定的意義,這一點(diǎn)就

6、與分隔符(空格)不同。例子中的冒號(hào)(:)、逗(空格)不同。例子中的冒號(hào)(:)、逗號(hào)(,)都是一種界符。號(hào)(,)都是一種界符。 3 3常量常量 凡是出現(xiàn)在凡是出現(xiàn)在80C51源程序中的固定值源程序中的固定值(它在程序運(yùn)行期間不會(huì)變化),就稱為(它在程序運(yùn)行期間不會(huì)變化),就稱為常量(常量(constants)。例子中的數(shù))。例子中的數(shù)0、3、100等都是常量,而且是數(shù)字常量。等都是常量,而且是數(shù)字常量。 匯編語言中允許的常量有數(shù)字常量和匯編語言中允許的常量有數(shù)字常量和字符串常量?jī)煞N。字符串常量?jī)煞N。(1)數(shù)字(整數(shù))常量)數(shù)字(整數(shù))常量(2)字符串常量)字符串常量 4 4標(biāo)識(shí)符標(biāo)識(shí)符 一個(gè)標(biāo)識(shí)

7、符是由最多為一個(gè)標(biāo)識(shí)符是由最多為31個(gè)字母、數(shù)個(gè)字母、數(shù)字及規(guī)定的特殊字符(字及規(guī)定的特殊字符(? _ $)等組成的,)等組成的,且不能用數(shù)字打頭(以免與十六進(jìn)制數(shù)相且不能用數(shù)字打頭(以免與十六進(jìn)制數(shù)相混淆)?;煜?。 5 5保留字保留字 6 6注釋注釋 4.2.2 4.2.2 符號(hào)符號(hào) 1 1寄存器(寄存器(registersregisters) 2 2變量(變量(variablevariable) 3 3標(biāo)號(hào)(標(biāo)號(hào)(labellabel) 4 4數(shù)數(shù) 4.2.3 4.2.3 表達(dá)式表達(dá)式 1 1操作數(shù)(操作數(shù)(operandsoperands)(1)常量操作數(shù))常量操作數(shù)(2)存儲(chǔ)器操作數(shù)

8、)存儲(chǔ)器操作數(shù) 2 2運(yùn)算符(運(yùn)算符(operatorsoperators)(1)算術(shù)運(yùn)算符)算術(shù)運(yùn)算符(2)邏輯運(yùn)算符)邏輯運(yùn)算符(3)關(guān)系運(yùn)算符)關(guān)系運(yùn)算符 4.2.4 4.2.4 語句語句 如前所述,一個(gè)匯編語言的源程序是如前所述,一個(gè)匯編語言的源程序是由一條條語句(由一條條語句(statements)組成的,語)組成的,語句就是完成一個(gè)動(dòng)作的說明。源程序中的句就是完成一個(gè)動(dòng)作的說明。源程序中的語句可分成如下兩類。語句可分成如下兩類。 一類是指令語句,匯編程序把它們翻一類是指令語句,匯編程序把它們翻譯成機(jī)器代碼,這些代碼命令譯成機(jī)器代碼,這些代碼命令80C51執(zhí)行執(zhí)行某些操作,如某些操作

9、,如MOV、ADD、JMP等。等。 另一類指示性語句(偽指令),匯編另一類指示性語句(偽指令),匯編程序并不把它們翻譯成機(jī)器代碼,也不可程序并不把它們翻譯成機(jī)器代碼,也不可能翻譯成機(jī)器代碼,只是用來指示、引導(dǎo)能翻譯成機(jī)器代碼,只是用來指示、引導(dǎo)匯編程序在匯編時(shí)做一些操作,如定義符匯編程序在匯編時(shí)做一些操作,如定義符號(hào)、分配存儲(chǔ)單元、初始化存儲(chǔ)器等,所號(hào)、分配存儲(chǔ)單元、初始化存儲(chǔ)器等,所以偽指令本身不占用存儲(chǔ)單元,例如:以偽指令本身不占用存儲(chǔ)單元,例如: 4.3 指示性語句指示性語句 在在Ax51宏匯編中有以下幾種指示性語宏匯編中有以下幾種指示性語句(句(directive statements

10、):): 符號(hào)定義(符號(hào)定義(symbol definition)語)語句;句; 數(shù)據(jù)定義(數(shù)據(jù)定義(data definition)語句;)語句; 結(jié)束(結(jié)束(termination)語句。)語句。 4.3.1 4.3.1 符號(hào)定義語句符號(hào)定義語句 1 1等值語句等值語句EQUEQU NAME EQU 表達(dá)式表達(dá)式 2 2定義匯編過程中的變量語句定義匯編過程中的變量語句SETSET SET語句的格式為:語句的格式為: 符號(hào)名符號(hào)名SET表達(dá)式表達(dá)式 3 3給內(nèi)部給內(nèi)部RAMRAM的位單元定義一個(gè)符號(hào)位地址語句的位單元定義一個(gè)符號(hào)位地址語句BITBIT BIT語句的內(nèi)格式為:語句的內(nèi)格式為:

11、4 4給直接尋址的內(nèi)部給直接尋址的內(nèi)部RAMRAM字節(jié)單元定義符號(hào)名語句字節(jié)單元定義符號(hào)名語句 DATADATA DATA語句的格式為:語句的格式為: 符號(hào)名符號(hào)名DATA表達(dá)式表達(dá)式 4.3.2 4.3.2 存儲(chǔ)空間初始化語句存儲(chǔ)空間初始化語句 存儲(chǔ)空間初始化語句,其格式與指令存儲(chǔ)空間初始化語句,其格式與指令性語句基本相似,也由性語句基本相似,也由4個(gè)字段組成,其格個(gè)字段組成,其格式如下:式如下:標(biāo)號(hào)標(biāo)號(hào):偽指令助記符偽指令助記符參數(shù)參數(shù)1,參數(shù)參數(shù)2, ;注釋注釋 此類偽指令共有此類偽指令共有4條:條:DB(Define Byte,定義字節(jié))和,定義字節(jié))和DW(Define Word,定

12、義字)僅適用于定義字)僅適用于ROM空間,為空間,為ROM區(qū)間區(qū)間填充常數(shù)或常數(shù)表格;填充常數(shù)或常數(shù)表格;DS(Data byte Reserve Space,為數(shù)據(jù)字節(jié)保留空間),為數(shù)據(jù)字節(jié)保留空間)和和DBIT(Data BIT reserve space,為數(shù)據(jù),為數(shù)據(jù)位保留空間位保留空間),用來從其一,用來從其一RAM地址開始預(yù)地址開始預(yù)留一些單元,作為變量空間。留一些單元,作為變量空間。 1 1DBDB在在ROMROM空間定義一個(gè)字節(jié)數(shù)值串空間定義一個(gè)字節(jié)數(shù)值串 標(biāo)號(hào)標(biāo)號(hào):DBN1,N2, Nx POWER_2 1 +1 2 +1 4 +1 8 +1 16 圖圖4-1 包含包含2的權(quán)

13、的字節(jié)的表的權(quán)的字節(jié)的表 2 2DWDW在在ROMROM空間定義一個(gè)字列表(地址表)空間定義一個(gè)字列表(地址表) DW偽指令的格式與功能與偽指令的格式與功能與DB類似,類似,只是只是DW定義的是一個(gè)雙字節(jié)的字序列。每定義的是一個(gè)雙字節(jié)的字序列。每個(gè)數(shù)據(jù)項(xiàng)占個(gè)數(shù)據(jù)項(xiàng)占2個(gè)字節(jié),并且個(gè)字節(jié),并且16位二進(jìn)制數(shù)的位二進(jìn)制數(shù)的高高8位存放在低地址單元,而低位存放在低地址單元,而低8位存放在位存放在高地址單元。高地址單元。DW通常用于在通常用于在ROM中定義中定義一個(gè)一個(gè)16位的跳轉(zhuǎn)地址表。位的跳轉(zhuǎn)地址表。 3 3DSDS在在RAMRAM中保留指定數(shù)量的字節(jié)單元中保留指定數(shù)量的字節(jié)單元 DS語句的格式為

14、:語句的格式為: 標(biāo)號(hào)標(biāo)號(hào):DSnn 自標(biāo)號(hào)開始在自標(biāo)號(hào)開始在RAM中保留中保留nn個(gè)字節(jié)單個(gè)字節(jié)單元,用以存放程序運(yùn)行過程中產(chǎn)生的數(shù)據(jù)元,用以存放程序運(yùn)行過程中產(chǎn)生的數(shù)據(jù)或變量?;蜃兞俊n可以是數(shù)值常量或在匯編過程可以是數(shù)值常量或在匯編過程中能產(chǎn)生數(shù)值的表達(dá)式。例如:中能產(chǎn)生數(shù)值的表達(dá)式。例如: 4 4DBITDBIT在在RAMRAM中保留指定數(shù)量的位單元中保留指定數(shù)量的位單元 DBIT偽指令與偽指令與DS為指令類似,只是為指令類似,只是它在它在RAM中保留指定數(shù)量的位單元,以儲(chǔ)中保留指定數(shù)量的位單元,以儲(chǔ)存在程序運(yùn)行過程中產(chǎn)生的位變量。用以存在程序運(yùn)行過程中產(chǎn)生的位變量。用以指定位單元數(shù)

15、量的指定位單元數(shù)量的“nn”可以是數(shù)值常量或可以是數(shù)值常量或表達(dá)式。表達(dá)式。 4.3.3 4.3.3 起始語句起始語句 起始語句起始語句ORG(origin),它規(guī)定了),它規(guī)定了段內(nèi)的起始地址。偽指令段內(nèi)的起始地址。偽指令ORG 的一般格式的一般格式為:為: ORG 表達(dá)式表達(dá)式 4.3.4 4.3.4 結(jié)束語句結(jié)束語句 END 4.4.2 4.4.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì)4.4 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例 例例4-1 兩個(gè)兩個(gè)32位位BCD數(shù)相加程序。數(shù)相加程序。 若有兩個(gè)若有兩個(gè)32位位BCD數(shù)數(shù)DATA1與與DATA2,DATA1存放在自存放在自50H開始的單元中

16、,開始的單元中,DATA2存放在自存放在自60H開始的單元中。存放開始的單元中。存放時(shí)低字節(jié)在低地址處,高字節(jié)在地址較高時(shí)低字節(jié)在低地址處,高字節(jié)在地址較高處。相加以后的和自處。相加以后的和自70H單元開始存放,其單元開始存放,其流程圖如圖流程圖如圖4-2所示。所示。 圖圖4-2 直線運(yùn)行程序流程圖直線運(yùn)行程序流程圖 4.4.2 4.4.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì) 圖圖4-3 符號(hào)函數(shù)的程序流程圖符號(hào)函數(shù)的程序流程圖 4.4.3 4.4.3 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 1 1用計(jì)數(shù)器控制循環(huán)用計(jì)數(shù)器控制循環(huán) 圖圖4-4 計(jì)數(shù)循環(huán)程序流程圖計(jì)數(shù)循環(huán)程序流程圖 程序如下:程序如下: 2 2多重循環(huán)

17、多重循環(huán) 延時(shí)子程序如下:延時(shí)子程序如下: 圖圖4-5 多重循環(huán)程序流程圖多重循環(huán)程序流程圖 4.4.4 4.4.4 字符串處理程序設(shè)計(jì)字符串處理程序設(shè)計(jì) 1 1確定字符串的長(zhǎng)度確定字符串的長(zhǎng)度 例例4-3 從頭搜索字符串的結(jié)束標(biāo)志,從頭搜索字符串的結(jié)束標(biāo)志,統(tǒng)計(jì)搜索的字符個(gè)數(shù),其流程圖如圖統(tǒng)計(jì)搜索的字符個(gè)數(shù),其流程圖如圖4-6所所示。示。 圖圖4-6 確定字符串長(zhǎng)度的流程圖確定字符串長(zhǎng)度的流程圖 相應(yīng)的程序如下:相應(yīng)的程序如下: 2 2加偶校驗(yàn)到加偶校驗(yàn)到ASCIIASCII字符字符 例例4-4 若有一個(gè)若有一個(gè)ASCII字符串,它們的字符串,它們的起始地址放在單元起始地址放在單元STRING內(nèi),要求從串中內(nèi),要求從串中取出每一個(gè)字符,檢查其中包含的取出每一個(gè)字符,檢查其中包含的“1”的的個(gè)數(shù),若已為偶數(shù),則它的最高有效位置個(gè)數(shù),若已為偶數(shù),則它的最高有效位置“0”;否則,最高有數(shù)位置;否則,最高有數(shù)位置“1”后送回,后送回,其流程圖如圖其流程圖如圖4-7所示。所示。 圖圖4-7 加偶校驗(yàn)位至加偶校驗(yàn)位至ASCII字符流程圖字符流程圖 相應(yīng)的程序如下:相應(yīng)的程序如下: 圖圖4-8 把十六進(jìn)制數(shù)轉(zhuǎn)換為把十六進(jìn)制數(shù)轉(zhuǎn)換為ASC

溫馨提示

  • 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. 人人文庫(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)論