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

下載本文檔

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

文檔簡介

會計(jì)學(xué)1第4章匯編語言程序設(shè)計(jì)1第4章匯編語言程序設(shè)計(jì)4.1匯編語言和匯編程序的基本概念

4.2匯編語言源程序書寫格式

4.3

8086匯編語言中標(biāo)識符、表達(dá)式和運(yùn)算符

4.5匯編語言程序上機(jī)過程

4.4偽指令語句

第1頁/共39頁4.1匯編語言和匯編程序的基本概念

4.1.1匯編語言面向CPU指令系統(tǒng)的程序設(shè)計(jì)語言采用助記符表示操作碼和操作數(shù)用符號地址表示操作數(shù)地址用匯編語言編寫程序占用內(nèi)存空間少,執(zhí)行速度快第2頁/共39頁

將匯編語言源程序翻譯成目標(biāo)程序的過程稱為匯編,所用的軟件稱為匯編程序。

宏匯編程序MASM

匯編產(chǎn)生目標(biāo)程序文件和源程序列表文件:目標(biāo)程序文件經(jīng)連接定位后由計(jì)算機(jī)執(zhí)行源程序列表文件將列出源程序、目標(biāo)程序的機(jī)器語言代碼及符號表

4.1.2匯編程序第3頁/共39頁語句類型

8086宏匯編MASM使用的語句分成3種類型:指令語句:能夠產(chǎn)生目標(biāo)代碼,CPU可執(zhí)行偽指令語句:為匯編程序和連接程序提供的管理性語句,不產(chǎn)生目標(biāo)代碼宏指令語句:可包括多條指令或偽指令4.2匯編語言語句的格式第4頁/共39頁一般情況下,匯編語言的語句可以由1~4部分組成:[名字]操作碼項(xiàng)[操作數(shù)][;注釋]名字(標(biāo)號)項(xiàng)是一個(gè)符號。操作碼項(xiàng)是一個(gè)操作碼的助記符,它可以是指令、偽操作或宏指令。操作數(shù)項(xiàng)由一個(gè)或多個(gè)表達(dá)式組成,它提供為執(zhí)行所要求的操作而需要的信息。注釋項(xiàng)用來說明程序或語句的功能,分號(;)為識別注釋項(xiàng)的開始,也可以從一行的第一個(gè)字符開始,此時(shí)整行都是注釋,常用來說明下面一段程序的功能。其中帶方括號的部分表示任選項(xiàng),即可以選用,也可以不用。下機(jī)分別說明每一項(xiàng)的作用及表示方法。4.2.1名字項(xiàng)第5頁/共39頁

4.2.1名字項(xiàng)名字項(xiàng)可以是語句標(biāo)號或標(biāo)量。標(biāo)號是可執(zhí)行指令語句的符號地址,在代碼段中定義,用作轉(zhuǎn)移指令或調(diào)用指令的操作數(shù),表示轉(zhuǎn)移地址;變量通常是指存放數(shù)據(jù)的存儲器單元符號地址,它在除段碼段以外的其它段中定義,可以用作指令的操作數(shù)。名字和變量統(tǒng)稱為標(biāo)識符。第6頁/共39頁1.組成名字的字符及規(guī)則它是由字母打頭的字符串,可由下列字符組成:①字母A~Z,a~z。②數(shù)字0~9。③專用字符?、.、@、-、$。除數(shù)字0~9外,其他字符都可以放在名字的第一個(gè)位置。字符“.”只能出現(xiàn)在名字的第一個(gè)位置,其他位置不允許出現(xiàn)。名字最長由31個(gè)字符組成。匯編程序?qū)?1個(gè)以后的字符不予理會,所以,當(dāng)兩個(gè)名字的前31個(gè)字符完全相同而從第32個(gè)字符開始有不同字符時(shí),匯編程序?qū)⑺鼈円暈橥幻?。?頁/共39頁2.標(biāo)號和變量的區(qū)別

標(biāo)號是某條指令所存放單元的符號地址,而變量是某操作數(shù)據(jù)所存放單元的符號地址。在匯編語言程序中,指令語句中的名字一般采用標(biāo)號,這個(gè)標(biāo)號可以是任選的,即可以不寫。標(biāo)號出現(xiàn)在代碼段,后面跟著冒號“:”。第8頁/共39頁3變量和標(biāo)號的屬性標(biāo)號和名字一經(jīng)定義便具有兩類三種屬性:①段值標(biāo)號和名字對應(yīng)存儲單元的段地址②偏移值標(biāo)號和名字對應(yīng)存儲單元的偏移地址③類型標(biāo)號、子程序名的類型可以是NEAR(近)和FAR(遠(yuǎn)),分別表示段內(nèi)或段間變量名的類型可以是BYTE(字節(jié))、WORD(字)和DWORD(雙字)等地址屬性類型屬性第9頁/共39頁4.2.3操作數(shù)項(xiàng)操作數(shù)項(xiàng)是操作符的操作對象。操作符在完成相應(yīng)的操作時(shí)要求有一系列的操作數(shù)。當(dāng)有兩個(gè)或兩個(gè)以上的操作數(shù)時(shí),各操作數(shù)之間用逗號隔開。對于指令語句,操作數(shù)項(xiàng)一般給出操作數(shù)地址,它們可能一個(gè)或多個(gè),或一個(gè)也沒有。對于偽指令和宏指令語句,操作數(shù)項(xiàng)則給出所要求的參數(shù)。操作數(shù)一般有常數(shù)、寄存器、標(biāo)號、變量和表達(dá)式等幾種形式。第10頁/共39頁1.常數(shù)常數(shù)是操作數(shù)位置出現(xiàn)的數(shù)值數(shù)據(jù)或字符型數(shù)據(jù),它的值在匯編時(shí)已完全確定,程序運(yùn)行過程中,不會發(fā)生變化。在8086宏匯編中,允許有以下幾種常數(shù):①二進(jìn)制常數(shù):是一串0和1數(shù)字的組合,以字母B結(jié)尾。②八進(jìn)制常數(shù):由數(shù)字0~7組成,必須以字母O結(jié)尾。③十進(jìn)制常數(shù):這是最常用的一種常數(shù),后跟字母D或不跟任何字母。④十六進(jìn)制常數(shù):由數(shù)字0~9和字母A~F組成,這類數(shù)據(jù)必須以字母H結(jié)尾。⑤字符串常數(shù):用單引號括起來的字符以及字符串,其各個(gè)字符的ASCII碼值構(gòu)成字符串常數(shù)。字符串常數(shù)可以和整數(shù)常數(shù)等價(jià)使用,但這些字符串常數(shù)的長度必須為一個(gè)字節(jié)或一個(gè)字,以便與目標(biāo)操作數(shù)的長度相匹配。在指令中,常數(shù)通常被稱為立即數(shù),它只能用作源操作數(shù),不能作為目標(biāo)操作數(shù)。它的允許取值范圍由指令中的目標(biāo)操作數(shù)的形式自動確定為8位或16位。第11頁/共39頁2表達(dá)式和運(yùn)算符指由運(yùn)算符連接的各種常數(shù)構(gòu)成的表達(dá)式匯編過程中計(jì)算表達(dá)式得數(shù)值程序運(yùn)行之前,已算出結(jié)果增強(qiáng)程序可讀性第12頁/共39頁2、表達(dá)式和運(yùn)算符(1)算術(shù)運(yùn)算符+

-

*

/MOD(2)邏輯運(yùn)算符ANDORXORNOT(3)移位運(yùn)算符

SHLSHR(4)關(guān)系運(yùn)算符

EQNEGTLTGELE(5)分析運(yùn)算符HIGHLOW第13頁/共39頁(1)算術(shù)運(yùn)算符實(shí)現(xiàn)加、減、乘、除、取余的算術(shù)運(yùn)算MOVAX,3*4+5 ;等價(jià)于MOVAX,17其中MOD也稱為取模,它產(chǎn)生除法之后的余數(shù),如19MOD7=5加+和減-運(yùn)算符還可以用于地址表達(dá)式除加、減外,其他運(yùn)算符的參數(shù)必須是整數(shù)第14頁/共39頁(2)邏輯運(yùn)算符實(shí)現(xiàn)按位相與、相或、異或、求反的邏輯運(yùn)算ORAL,03HAND45H;等價(jià)于ORAL,01H第15頁/共39頁(3)移位運(yùn)算符實(shí)現(xiàn)對數(shù)值的左移、右移的邏輯操作;移入低位或高位的是0格式為:數(shù)值表達(dá)式SHL/SHR移位次數(shù)MOVAL,0101BSHL(2*2);等價(jià)于MOVAL,01010000B第16頁/共39頁(4)關(guān)系運(yùn)算符用于比較和測試符號數(shù)值MASM用0FFFFH(補(bǔ)碼-1)表示條件為真MASM用0000H表示條件為假

MOVBX,PORTGE5;PORT<5時(shí),匯編結(jié)果為MOVBX,0FFFFH;否則,匯編結(jié)果為MOVBX,0第17頁/共39頁(5)分析運(yùn)算符對存儲器地址進(jìn)行運(yùn)算的5個(gè):SEG(求段基值)、OFFSET(求偏移量)、TYPE(求變量類型)、LENGTH(求變量長度)和SIZE(求字節(jié)數(shù))

例如:

MOVBX,SEGARR

MOVES,SEGDATA1第18頁/共39頁 ORG$+10ARRAYDB45,45H ……MOVBX,OFFSETARRAY ;等價(jià)于LEABX,ARRAY MOVCL,ARRAY+4 ;等效于MOVCL,ARRAY[4] MOVAX,ES:[2000H]分析運(yùn)算符實(shí)例

加4個(gè)字節(jié)單元第19頁/共39頁屬性修改運(yùn)算符,用來建立和臨時(shí)改變變量或標(biāo)號的類型6個(gè):PTR、段屬性前綴、SHORT、THIS例如:

MOVBX,OFFSETARR;等同于LEABX,ARR

MOVAX,ES:[DATA1]

MOVCX,WORDPTR[BX]

MOVDX,HIGHDATA1(6)綜合運(yùn)算符第20頁/共39頁運(yùn)算符的優(yōu)先級()<>[]·LENGTHSIZEPTROFFSETSEGTPYETHIS:HIGHLOW*/MODSHLSHR+-EQNEGTLTGELENOTANDORXORSHORT

建議采用圓括號“()”顯式表達(dá),它可以極大地提高程序的可閱讀性第21頁/共39頁5.3偽指令語句給匯編程序(軟件)的命令,在匯編過程中處理5.3.1數(shù)據(jù)定義偽指令用來定義變量的類型分配存儲單元,可賦值或不賦值一般格式:[變量名]

偽指令

操作數(shù)

[,操作數(shù)…][;注釋]第22頁/共39頁

2.常用的數(shù)據(jù)定義偽指令定義字節(jié)變量偽指令DB

定義字變量偽指令DW

定義雙字變量偽指令DD

定義四字變量偽指令DQ

定義十字節(jié)變量偽指令DT

變量定義偽指令最常使用第23頁/共39頁字節(jié)單元定義實(shí)例DATA SEGMENT ;數(shù)據(jù)段

XDB'A',-5DB2DUP(100),?YDB'ABC'DATA ENDS應(yīng)用指定復(fù)制次數(shù),用復(fù)制運(yùn)算符DUP復(fù)制操作數(shù)第24頁/共39頁字單元定義實(shí)例DATASEGMENT;數(shù)據(jù)段

COUNTDW8000H,?,'AB'MAXINTEQU64HNUMBERDWMAXINTARRAYDWMAXINTDUP(0)DATA ENDS應(yīng)用第25頁/共39頁4.3.2符號定義偽指令給符號重新命名或定義新的類型屬性常用的有EQU、=、LABLE

5.4.3段定義偽指令定義邏輯段時(shí)指定段的名稱和范圍,并指明段的定位類型、組合類型及類別常用SEGMENT、ENDS和ASSUME等第26頁/共39頁符號定義

DCHAREQU2 ENTER=13 CALLDOSEQU<INT21H>符號應(yīng)用(左邊程序段等價(jià)右側(cè)的符號形式)

MOVAH,DCHAR

;

MOVAH,2

MOVDL,ENTER;MOVDL,13 CALLDOS;INT21H

符號常數(shù)實(shí)例第27頁/共39頁4.3.4過程定義偽指令將一些重復(fù)出現(xiàn)的語句組定義為子程序,又稱為過程,可以采用CALL指令來調(diào)用。定義格式:

過程名

PROC[NEAR]/FAR

(語句系列)

RET

(語句系列)

過程名

ENDP2.

調(diào)用過程的格式:CALL過程名

第28頁/共39頁

4.3.5結(jié)構(gòu)定義偽指令結(jié)構(gòu)是相互關(guān)聯(lián)的一組數(shù)據(jù)的組合形式。用偽指令STRUC和ENDS把相關(guān)數(shù)據(jù)定義語句組合起來,便構(gòu)成一個(gè)完整的結(jié)構(gòu)。使用格式:

結(jié)構(gòu)名

STRUC

…(數(shù)據(jù)定義語句序列)

結(jié)構(gòu)名ENDS第29頁/共39頁4.3.6模塊定義與連接偽指令編寫規(guī)模較大的匯編語言源程序時(shí),可將整個(gè)程序劃分為幾個(gè)獨(dú)立的源程序,稱之為模塊。將各模塊分別進(jìn)行匯編,生成各自的目標(biāo)程序,最后連接成為一個(gè)完整的可執(zhí)行程序。各模塊之間可以相互進(jìn)行符號訪問。為了進(jìn)行模塊間連接和相互訪問,通常使用偽指令NAME、END、PUBLIC、EXTRN第30頁/共39頁4.3.7程序計(jì)數(shù)器$和ORG偽指令

1.程序計(jì)數(shù)器$用在表達(dá)式里,為下一個(gè)能分配的存儲單元的偏移地址

2.ORG偽指令起始位置設(shè)定偽指令用來指出源程序或數(shù)據(jù)塊的起點(diǎn)可改變位置計(jì)數(shù)器的值

第31頁/共39頁4.4匯編語言程序的段結(jié)構(gòu)匯編語言源程序的分段結(jié)構(gòu)若干個(gè)任意排序的邏輯段每個(gè)邏輯段以SEGMENT語句開始,以ENDS語句結(jié)束整個(gè)源程序以END語句結(jié)束第32頁/共39頁4.5匯編語言程序上機(jī)過程

4.5.1匯編語言的工作環(huán)境及上機(jī)步驟

1.硬件環(huán)境

一般IBMPC/XT及其兼容機(jī)基本配置

2.軟件環(huán)境

1)DOS操作系統(tǒng)2)編輯程序

3)宏匯編程序MASM.EXE4)連接程序LINK.EXE5)調(diào)試程序DEBUG.COM第33頁/共39頁3.運(yùn)行匯編語言程序的步驟

1)編輯匯編語言源程序,擴(kuò)展名為.ASM;

2)用MASM.EXE匯編成.OBJ目標(biāo)文件;

3)有語法錯(cuò),用編輯軟件重新調(diào)入修改。無錯(cuò)用LINK.EXE把.OBJ文件轉(zhuǎn)化成.EXE可執(zhí)行

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論