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

下載本文檔

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

文檔簡(jiǎn)介

1

DATASEGMENT;定義數(shù)據(jù)段

DATA1DB0F8H,60H,0ACH,74H,3BH;被加數(shù)

DATA2DB0C1H,36H,9EH,0D5H,20H;加數(shù)

DATAENDS;數(shù)據(jù)段結(jié)束

CODESEGMENT;定義代碼段

ASSUMECS:CODE,DS:DATA;告訴匯編程序段范圍

START:MOVAX,DATA

MOVDS,AX;初始化DS

MOVCX,5

;循環(huán)次數(shù)送CX

MOVSI,0

;置SI初值為零匯編語言格式第2節(jié)匯編語言源程序的格式2

CLC

;清CF標(biāo)志LOOPER:MOVAL,DATA2[SI];取一個(gè)字節(jié)加數(shù)

ADCDATA1[SI],AL;與被加數(shù)相加

INC SI

;SI加1指向下一字節(jié)

DECCX

;計(jì)數(shù)器CX減1

JNZLOOPER

;不等于零轉(zhuǎn)移

MOVAH,4CH

;停止

INT21H

;返回DOSCODEENDS;代碼段結(jié)束

ENDSTART

;源程序結(jié)束,指定起始地址標(biāo)號(hào)匯編語言格式第2節(jié)匯編語言源程序的格式3匯編語言源程序標(biāo)準(zhǔn)格式DATASEGMENT…...DATAENDSSTACKSEGMENT…...STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AX ;初始化 …… MOVAH,4CH;返回DOS INT21HCODEENDSENDSTART第2節(jié)匯編語言源程序的格式分段結(jié)構(gòu)至少一個(gè)代碼段段分配:Assume設(shè)置DS、ES、SS返回DOS源代碼結(jié)束4匯編語言語句的類型和組成指令性語句:機(jī)器指令相對(duì)應(yīng),可以產(chǎn)生相應(yīng)的機(jī)器碼第2節(jié)匯編語言源程序的格式語句格式—例:LOOPER:ADDAH,[SI];加法指示性語句(偽操作指令):不產(chǎn)生機(jī)器碼。無對(duì)應(yīng)的機(jī)器指令,匯編時(shí)對(duì)偽指令進(jìn)行處理,可完成數(shù)據(jù)定義、存儲(chǔ)區(qū)分配、段定義、段分配、指示程序結(jié)束等功能。格式——名字偽指令指示符操作數(shù),操作數(shù);注釋例:DATA1DB0F8H,60H,0ACH,74H語句格式—名字

偽指令操作符

操作數(shù),操作數(shù);注釋5助記符和偽操作指令助記符:MOV,ADD,….指示性(偽指令)操作符:DB,DW,SEGMENT,ENDS,ASSUME,END,….名字和標(biāo)號(hào):保留字第2節(jié)匯編語言源程序的格式6操作數(shù)匯編語言中的操作數(shù),可以是常數(shù)、變量、標(biāo)號(hào)、寄存器、存儲(chǔ)器或表達(dá)式。常數(shù)是固定值,沒有屬性,是確定的數(shù)據(jù)。二進(jìn)制:字母“B”結(jié)尾,例00110100B;八進(jìn)制:字母“Q”或“O”結(jié)尾,例1037O、2370Q;十進(jìn)制:字母“D”結(jié)尾或省略,或科學(xué)表示法,例1234D、5678、2.735E-2;十六進(jìn)制:字母“H”結(jié)尾,“A~F”開頭時(shí),前面加0,例56H、0A7F2H;字符串:用單引號(hào)‘’括起來,機(jī)內(nèi)存放的是各字符的ASCII碼。例‘ABC’。第2節(jié)匯編語言源程序的格式7操作數(shù)變量第2節(jié)匯編語言源程序的格式變量通常指存放在存儲(chǔ)單元中的值,程序運(yùn)行中可以修改。所有的變量都具有三個(gè)屬性。⑴段值(SEGMENT)⑵段內(nèi)偏移地址(OFFSET)⑶類型(TYPE)8操作數(shù)標(biāo)號(hào)第2節(jié)匯編語言源程序的格式

標(biāo)號(hào)是可執(zhí)行指令語句的地址的符號(hào)表示,可作為程序轉(zhuǎn)向的目標(biāo)地址。具有三個(gè)屬性。(1)段值(SEGMENT)(2)段內(nèi)偏移地址(OFFSET)(3)類型(TYPE)

類型NEAR,表示近標(biāo)號(hào),只能實(shí)現(xiàn)段內(nèi)轉(zhuǎn)移或調(diào)用;類型FAR,表示遠(yuǎn)標(biāo)號(hào),可以實(shí)現(xiàn)段間轉(zhuǎn)移或調(diào)用。注意:若標(biāo)號(hào)后面緊跟冒號(hào),表示隱含此標(biāo)號(hào)距離屬性為NEAR,也可用偽指令將此屬性改為FAR。9操作數(shù)表達(dá)式表達(dá)式:運(yùn)算對(duì)象+運(yùn)算符。在匯編時(shí)進(jìn)行運(yùn)算,運(yùn)算結(jié)果作為語句中的操作數(shù)。運(yùn)算對(duì)象:常數(shù)、變量、標(biāo)號(hào)。得到的運(yùn)算結(jié)果可以是一個(gè)常數(shù)字,也可以是一個(gè)存儲(chǔ)器的地址。MASM中6類運(yùn)算符:算術(shù)運(yùn)算符邏輯運(yùn)算符關(guān)系運(yùn)算符分析運(yùn)算符合成運(yùn)算符其它運(yùn)算符

第2節(jié)匯編語言源程序的格式10操作數(shù)MASM的表達(dá)式中的運(yùn)算符(1)11操作數(shù)MASM的表達(dá)式中的運(yùn)算符(2)12操作數(shù)MASM的表達(dá)式中的運(yùn)算符(3)13運(yùn)算符之一:算術(shù)運(yùn)算符+、-、*、/(除,只取除法運(yùn)算結(jié)果之商)、MOD(模,只取除法運(yùn)算結(jié)果之余數(shù))注意:所有的算術(shù)運(yùn)算符均可以進(jìn)行數(shù)據(jù)運(yùn)算,運(yùn)算對(duì)象與運(yùn)算結(jié)果都是整數(shù)。若對(duì)地址運(yùn)算,通常是在標(biāo)號(hào)上加/減某一個(gè)數(shù)字量。第2節(jié)匯編語言源程序的格式例:數(shù)組ARRAY定義如下

ARRAYDB1,2,3,4,5,6,7,8TRYDB20指令為:MOVAX,30*5MOVCX,(TRY-ARRAY)匯編時(shí),計(jì)算表達(dá)式形成如下指令:MOVAX,MOVCX,150814運(yùn)算符之一:算術(shù)運(yùn)算符第2節(jié)匯編語言源程序的格式例匯編程序指令格式如下:

DAEQU300MOVAX,DA-80MOVBX,DAMOD100MOVCX,DA/100MOVDH,01100100BSHR2

匯編時(shí),計(jì)算表達(dá)式形成指令為:

DAEQU300MOVAX,

MOVBX,

MOVCX,

MOVDH,2200319H15運(yùn)算符之二:邏輯運(yùn)算符第2節(jié)匯編語言源程序的格式包括4種:AND(與)、OR(或)、NOT(非)、XOR(異或)注意:按位運(yùn)算,只能對(duì)常數(shù)進(jìn)行運(yùn)算,得到結(jié)果也是常數(shù)。例MOVAL,NOT0FFHMOVBL,8CHAND73HMOVAH,8CHOR73H

匯編時(shí),計(jì)算表達(dá)式形成指令為:

MOVAL,

MOVBL,

MOVAH,

000FFH16運(yùn)算符之三:關(guān)系運(yùn)算符第2節(jié)匯編語言源程序的格式包括6種:EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)。注意:關(guān)系運(yùn)算符的兩個(gè)操作數(shù)必須是數(shù)據(jù),或是同一段內(nèi)的兩個(gè)存儲(chǔ)單元的地址;若結(jié)果為真,輸出全是1,即0FFH或0FFFFH;若結(jié)果為假,輸出全是0。例MOVAX,10HGT16ADDBL,6EQ0110BMOVCX,((PORTLT5)AND100)OR((PORTGE5)AND200)匯編時(shí),計(jì)算表達(dá)式形成指令為:

MOVAX,

ADDBL,

MOVCX,;當(dāng)端口<5時(shí)00FFH100172.SEG【格式】SEG變量或標(biāo)號(hào)

【功能】取變量或標(biāo)號(hào)的段基值。例

MOVAX,SEGM1MOVDS,AX設(shè):M1是段名為DATA的數(shù)據(jù)段中的一個(gè)變量名;如DATA段從0500H開始,上述指令把0500H作為立即數(shù)在連接時(shí)插入指令,匯編后指令變?yōu)?MOVAX,MOVDX,AX運(yùn)算符之四:分析運(yùn)算符第2節(jié)匯編語言源程序的格式0500H183.TYPE【格式】TYPE變量或標(biāo)號(hào)

【功能】加在變量前,返回變量的類型屬性;加在標(biāo)號(hào)前,返回標(biāo)號(hào)的距離屬性。運(yùn)算符之四:分析運(yùn)算符第2節(jié)匯編語言源程序的格式TYPE運(yùn)算符返回值19運(yùn)算符之四:分析運(yùn)算符第2節(jié)匯編語言源程序的格式例A1DB20H,30HA2DW0438HA3DD?L1:MOVAH,TYPEA1MOVBH,TYPEA2ADDAL,TYPEA3MOVBL,TYPEL1

匯編時(shí),計(jì)算表達(dá)式形成指令為:

MOVAH,MOVBH,ADDAL,MOVBL,1240FFH204.LENGTH【格式】LENGTH變量

【功能】當(dāng)變量中使用DUP時(shí),LENGTH返回此變量數(shù),對(duì)其它變量則返回1。運(yùn)算符之四:分析運(yùn)算符第2節(jié)匯編語言源程序的格式例M1DW100DUP(?)M2DW1,2,3M3DB‘A,B,C,D‘MOVCX,LENGTHM1MOVBL,LENGTHM2MOVAL,LENGTHM3

匯編時(shí),計(jì)算表達(dá)式形成指令為:

MOVCX,

;返回變量所包含的100個(gè)字單元

MOVBL,MOVAL,0FFH11215.SIZE【格式】SIZE變量

【功能】加在變量前,返回該變量分配的總字節(jié)數(shù)。SIZE=LENGTH*TYPE。運(yùn)算符之四:分析運(yùn)算符第2節(jié)匯編語言源程序的格式例對(duì)上例定義的M1,M2,M3MOVCX,SIZEM1MOVBL,SIZEM2MOVAL,SIZEM3

匯編時(shí),計(jì)算表達(dá)式形成指令為:

MOVCX,;返回變量所包含的200個(gè)字單元MOVBL,MOVBL,2002122運(yùn)算符之五:合成運(yùn)算符1.PTR第2節(jié)匯編語言源程序的格式【格式】類型/距離PTR變量或標(biāo)號(hào)【功能】將PTR左邊的類型屬性賦給右邊的變量或標(biāo)號(hào)。注意:PTR本身不分配存儲(chǔ)單元,僅對(duì)已分配的存儲(chǔ)單元賦予新的屬性;常與類BYTE、WORD、NEAR、FAR等連用。23運(yùn)算符之五:合成運(yùn)算符第2節(jié)匯編語言源程序的格式例N1DB15H,36HN2DW1122H,3344HLO:MOVAX,WORDPTRN1;使N1轉(zhuǎn)換成AX類型

MOVBL,N2;使N2轉(zhuǎn)換成BL類型例MOV[BX],10H

分析:將立即數(shù)送入BX間址指定的存儲(chǔ)單元,可以通過PTR指明是存入字節(jié)單元還是字單元。

MOVBYTEPTR[BX],10H;MOVWORDPTR[BX],10H;也可用PTR來改變距離屬性,

JMPFARPTRLOP

在JMP語句中將標(biāo)號(hào)LOP改為FAR,使JMP指令在其它代碼段中也可以用,實(shí)現(xiàn)段間轉(zhuǎn)移。BYTEPTR

242.THIS第2節(jié)匯編語言源程序的格式【格式】變量/標(biāo)號(hào)EQUTHIS類型/距離【功能】將EQUTHIS右邊的類型/距離屬性,賦給左邊的變量/標(biāo)號(hào),該變量或標(biāo)號(hào)的段地址和偏移地址與下一個(gè)存儲(chǔ)單元的地址相同。(同一段存儲(chǔ)空間)【例】FIRSTEQUTHISBYTETABLEDW200DUP(?)FIRST的偏移地址值與TABLE的偏移地址值相同,區(qū)別在于FIRST變量為字節(jié)類型,TABLE為字類型。運(yùn)算符之五:合成運(yùn)算符25運(yùn)算符之五:合成運(yùn)算符3.SHORT第2節(jié)匯編語言源程序的格式【格式】SHORT

標(biāo)號(hào)【功能】說明轉(zhuǎn)移類指令中轉(zhuǎn)向地址的屬性為短轉(zhuǎn)移:-128~+127之間例L1:JMPSHORTL2………L2:MOVAX,026運(yùn)算符之六:其它運(yùn)算符超越運(yùn)算符“:”【格式】段前綴:變量或地址表達(dá)式【功能】表示某個(gè)變量或地址被修改。例:MOVAX,ES:[BX]HIGH和LOW【格式】HIGH/LOW變量或標(biāo)號(hào)【功能】HIGH和LOW稱為字節(jié)分離運(yùn)算符。例K1EQU0ABCDHK2EQU1234HMOVAH,HIGHK1MOVBL,LOWK2匯編時(shí),計(jì)算表達(dá)式形成指令為:MOVAH,MOVBL,第2節(jié)匯編語言源程序的格式0ABH34H27

圓括號(hào)():

()中的運(yùn)算符具有最高優(yōu)先權(quán)。方括號(hào)[]:方括號(hào)主要用來表示地址表達(dá)式或多重變量的下標(biāo)值。尖括號(hào)<>,及圓點(diǎn)·

在結(jié)構(gòu)中專用。

MASK和WIDTH

在記錄中專用。運(yùn)算符之六:其它運(yùn)算符第2節(jié)匯編語言源程序的格式28數(shù)據(jù)定義偽指令【格式1】變量名助記符操作數(shù),操作數(shù)…;注釋【格式2】變量名助記符nDUP(操作數(shù),操作數(shù)…);注釋【功能】指定的存儲(chǔ)單元,以分配存儲(chǔ)空間或存入操作數(shù)。

變量名——用符號(hào)表示,可以省略,后面不跟冒號(hào)。匯編時(shí)將變量助記符后的第一個(gè)字節(jié)的偏移地址作為它的符號(hào)地址。

助記符——所用偽指令助記符主要有:

DB:用來定義字節(jié);DW:用來定義字;DD:用來定義雙字;DQ:用來定義四個(gè)字;DT:用來定義十個(gè)字節(jié);

操作數(shù)——操作數(shù)可以是常數(shù),字符串,變量,表達(dá)式等。多個(gè)操作數(shù)之間必須用逗號(hào)分開;格式2中,n必須是正整數(shù)。

注釋——說明偽指令的功能,注釋前必須帶分號(hào)“;”。第3節(jié)偽操作命令29數(shù)據(jù)定義偽指令第3節(jié)偽操作命令例操作數(shù)是常數(shù)或表達(dá)式:

DA1DB10H,52H

;變量DA1中裝入10H,52HDA2DW1122H,34H

;變量DA2中裝入22H,11H,34H,00HDA3DD0A0H,0FFEEH

;變量DA3中裝入A0H,00H,00H,;00H,EEH,FFH,00H,00H30數(shù)據(jù)定義偽指令第3節(jié)偽操作命令例操作數(shù)是字符串

FIRSTDB‘HELLO’;字符串‘HELLO’的ASCII碼裝入FIRST;開始的存儲(chǔ)單元SECONDDW‘OK’;字符串‘OK’的ASCII碼裝入SECOND開始的;存儲(chǔ)單元;只能定義兩個(gè)字符,即多于2字

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論