武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)課件_第1頁(yè)
武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)課件_第2頁(yè)
武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)課件_第3頁(yè)
武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)課件_第4頁(yè)
武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第六章匯編語(yǔ)言程序設(shè)計(jì)一.匯編語(yǔ)言語(yǔ)法二.匯編語(yǔ)言程序設(shè)計(jì)三.匯編程序及上機(jī)設(shè)計(jì)四.DOS及BIOS功能調(diào)用五.任務(wù)切換與混合語(yǔ)言編程

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.1匯編語(yǔ)言語(yǔ)法一、計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的演變

1)機(jī)器語(yǔ)言:直接用機(jī)器指令來(lái)編制計(jì)算機(jī)程序的方法

2)匯編語(yǔ)言:可以用助記符來(lái)表示指令的操作和操作數(shù),也可以用標(biāo)號(hào)和符號(hào)來(lái)代替地址、常量和變量。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

3)高級(jí)語(yǔ)言:更接近于人們的自然語(yǔ)言和習(xí)慣的教學(xué)語(yǔ)言來(lái)描述算法的執(zhí)行過(guò)程,從而使編寫的過(guò)程更加直觀和簡(jiǎn)練。最近,計(jì)算機(jī)語(yǔ)言的另一個(gè)發(fā)展方向是混合語(yǔ)言程序設(shè)計(jì)?;旌险Z(yǔ)言并不是一種新出現(xiàn)的自成系統(tǒng)的新型語(yǔ)言,它采用兩種或兩種以上的編程語(yǔ)言加以組合編程,是一種程序接口技術(shù),實(shí)現(xiàn)不同語(yǔ)言程序之間的相互調(diào)用。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)二、為什么要用匯編語(yǔ)言編寫程序1)匯編語(yǔ)言非常接近機(jī)器語(yǔ)言程序,通過(guò)編制匯編語(yǔ)言程序,可以清楚地了解計(jì)算機(jī)的工作過(guò)程。2)現(xiàn)在的微機(jī)系統(tǒng)中,底層的一些功能仍然靠匯編語(yǔ)言程序來(lái)實(shí)現(xiàn)。3)匯編語(yǔ)言程序的效率通常高于高級(jí)語(yǔ)言程序。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)三、匯編語(yǔ)言的語(yǔ)句種類及其格式

1、指令語(yǔ)句:每一條指令語(yǔ)句在匯編時(shí)都要產(chǎn)生一個(gè)可供機(jī)器執(zhí)行的機(jī)器目標(biāo)代碼,所以這種語(yǔ)言又叫可執(zhí)行語(yǔ)句。指令語(yǔ)句的可是如下:

標(biāo)號(hào):(前綴指令)助記符(操作數(shù));(注釋)

1)標(biāo)號(hào)。這是一個(gè)任選字段。標(biāo)號(hào)是指令語(yǔ)句的標(biāo)識(shí)符,在語(yǔ)句之首,必須以“:”作為結(jié)束符。對(duì)標(biāo)號(hào)的規(guī)定:①由字符A~Z,a~z,0~9及符號(hào)@、$、下劃線_等組成,最長(zhǎng)31個(gè)字符,超出部分忽略。②不能用數(shù)字打頭,以免與十六進(jìn)制數(shù)相混。③不使用匯編程序中的保留字。(如指令的助記符等)④對(duì)定義的符號(hào)不區(qū)分大小寫。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)2)指令助記符。這是為指令操作碼規(guī)定的符號(hào)。3)操作數(shù)??梢愿鶕?jù)指令的功能的需要,可不帶操作數(shù),帶一個(gè)操作數(shù)或兩個(gè)操作數(shù),若有兩個(gè)操作數(shù)時(shí),中間用“,”號(hào)分開。操作數(shù)給出參與操作的數(shù)或數(shù)所在的地方。操作數(shù)可以是常數(shù)、寄存器、存儲(chǔ)器操作數(shù)、標(biāo)號(hào)名、過(guò)程名或表達(dá)式等。4)注釋。注釋是為了方便程序員閱讀程序而加的說(shuō)明。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)四、

常數(shù)、標(biāo)號(hào)、變量及表達(dá)式

1、常數(shù):指令中出現(xiàn)的那些固定值和字符串常數(shù)兩類。

2、標(biāo)號(hào):用符號(hào)表示的地址,稱為符號(hào)地址,用以指示此指令語(yǔ)句所在的地址。

3、變量:變量是與一個(gè)數(shù)據(jù)項(xiàng)的第一字節(jié)相對(duì)應(yīng)的標(biāo)識(shí)符,它表示該數(shù)據(jù)第一字節(jié)在現(xiàn)行段中的偏移量。

4、表達(dá)式:表達(dá)式由操作數(shù)和運(yùn)算符組成。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)常數(shù)給出具體的數(shù)據(jù)。可以是數(shù)字常量或字符常量。◢◢

數(shù)字默認(rèn)十進(jìn)制,也可加D表示十進(jìn)制數(shù)。如

1234D,1234◢

數(shù)字后加B表示二進(jìn)制數(shù)。如

1010B◢

數(shù)字后加H表示十六進(jìn)制數(shù)。如1234H◢

字符常量,用單引號(hào)表示。如‘1234’

匯編時(shí),用字符對(duì)應(yīng)的ASCII表示。如

31H,32H,33H,34H例

data1DB12,34,56;十進(jìn)制

data2DB12H,34H,56H;十六進(jìn)制

MOVAL,‘G’;字符

stringDB‘1234’;字符串

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)A、B、C、D、E、F開頭的十六進(jìn)制數(shù)前面加0,與H結(jié)尾的標(biāo)識(shí)符區(qū)別。如寄存器名AH、BH、CH、

DH

變量名abcdH等例

movAL,0AHmovAL,AHmovBX,0abcdH

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)標(biāo)號(hào)標(biāo)號(hào)是符號(hào)表示的地址,稱為符號(hào)地址,標(biāo)號(hào)具有段地址,偏移地址,和類型3個(gè)屬性類型屬性有NEAR和FAR類型

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

變量變量的值在程序運(yùn)行過(guò)程中可隨時(shí)修改變量有3個(gè)屬性:(1)段地址:變量所在段的段地址。 (2)偏移地址:變量所在段的偏移地址。 (3)類型:變量所占的字節(jié)數(shù)。變量名DB表達(dá)式定義字節(jié)變量變量名DW表達(dá)式定義字變量變量名DD表達(dá)式定義雙字變量變量名DQ表達(dá)式定義長(zhǎng)字變量(8個(gè)字節(jié))變量名DT表達(dá)式定義十字節(jié)變量武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

上述偽指令中表達(dá)式的形式:(1)一個(gè)或多個(gè)常數(shù),或運(yùn)算公式(結(jié)果為常數(shù))當(dāng)有多個(gè)常數(shù)時(shí),兩兩之間用逗號(hào)分隔。從左到右由低地址向高地址順序存儲(chǔ)。(2)字符串用引號(hào)括住,長(zhǎng)度不超過(guò)255。從左到右由低地址向高地址以ASCII碼順序存儲(chǔ)。(3)問(wèn)號(hào)?(通配符)僅留出用于存儲(chǔ)數(shù)據(jù)的單元,但不改變單元中原有的數(shù)據(jù)。(4)DUP(重復(fù)方式)重復(fù)次數(shù)DUP(表達(dá)式);將表達(dá)式重復(fù)預(yù)置。武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

例:HUADB2DUP(‘HUA’,3DUP(0))該指令將數(shù)據(jù)塊(‘HUA’,3DUP(0))重復(fù)2次,而數(shù)據(jù)塊(‘HUA’,3DUP(0))以字符串HUA開始,接下來(lái)是3個(gè)0。在內(nèi)存中的存儲(chǔ)情況如圖所示:首單元48H55H41H00H00H00H48H55H41H00H00H00HDUP可以重疊使用,相當(dāng)于大循環(huán)中嵌套小循環(huán)武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

(5)地址表達(dá)式(僅用于DW或DD)使用DW時(shí):地址表達(dá)式中的變量名稱表示變量第一個(gè)單元的偏移地址

標(biāo)號(hào)表示指令的第一個(gè)字節(jié)的偏移地址。使用DD時(shí):

低兩字節(jié)為偏移地址,高兩字節(jié)為段地址。地址表達(dá)式中的變量或標(biāo)號(hào)可與常數(shù)相加減,結(jié)果仍為偏移地址,常數(shù)表示位移量:+表示向高地址方向移動(dòng);-表示向低地址方向移動(dòng)。變量與標(biāo)號(hào)之間不能相加,但可以相減,其結(jié)果為一常數(shù),表示兩者之間的距離。武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

例:P163DATA1DB20HDATA2DW0204H,100HDATA3DB(-1*3),(15/3)DATA4DD12345HDATA5DB‘0123’DATA6DW‘AB’,’C’,’D’DATA7DB?DATA8DD?DATA9DB5DUP(00)DATA10DW3DUP(?)武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

表達(dá)式由常量、標(biāo)號(hào)(標(biāo)識(shí)符)、變量和一些操作符構(gòu)成。匯編程序?qū)Ρ磉_(dá)式進(jìn)行運(yùn)算后,得到一個(gè)確定的數(shù)值,再把這個(gè)數(shù)值匯編到指令中。據(jù)表達(dá)式所表示的內(nèi)容分:數(shù)字表達(dá)式、地址表達(dá)式。表達(dá)式是指令或偽操作的操作數(shù);

表達(dá)式中的操作符由匯編程序完成。例

MOVAX,12-4;MOVAX,8;數(shù)字表達(dá)式

LEABX,[string+4];地址表達(dá)式

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)表達(dá)式中的操作符有以下幾類:(1)算術(shù)運(yùn)算符(+、-、*、/、MOD)(2)邏輯運(yùn)算符(AND、OR、NOT、XOR)(3)關(guān)系運(yùn)算符(EQ、NE、GT、GE、LT、LE)

真:FFFFH;假:0(4)分析運(yùn)算符(SEG、OFFSET、

TYPE、SIZE、LENGTH)(5)綜合運(yùn)算符(PTR,THIS)(6)地址記數(shù)器($)

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)例:

(1)算術(shù)運(yùn)算符(+、-、*、/、MOD(取余數(shù)))MOVAX,6*8←MOVAX,48AMODB;用A除以B,保留運(yùn)算的余數(shù)。要求A、B均為正整數(shù)。(2)邏輯運(yùn)算符(AND、OR、NOT、XOR)MOVAX,80hOR70h←MOVAX,0F0h

邏輯運(yùn)算符可以嵌套、組合使用如P165例MOVBX,((PORTLT5)AND20)OR((PORTGE5)AND30)思考:若要求當(dāng)PORT的值大于5而小于10時(shí),為BX賦值40應(yīng)如何編寫指令?(3)關(guān)系運(yùn)算符(EQ、NE、GT、GE、LT、LE)

真:FFFFH;假:0MOVAX,1GE2←MOVAX,0

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(4)分析運(yùn)算符:

TYPE,LENGTH,SIZE,OFFSET,SEG5種。把一些特征或存貯器地址的一部分作為數(shù)值回送。①類型運(yùn)算符TYPE格式:TYPEvariable變量或label標(biāo)號(hào)回送該變量以字節(jié)數(shù)表示的類型

(DB為1,DW為2,DD為4,DQ為8,DT為10)回送標(biāo)號(hào)類型數(shù)值(NEAR為1,F(xiàn)AR為2)例: ARRAYDW1,2,3ADDSI,TYPEARRAY匯編程序其形式:ADDSI,2

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)②LENGTH格式:LENGTHvariable

對(duì)于變量中使用DUP,匯編回送分配給變量單元數(shù),其他情況回送1。例: FESSDW100DUP(0)對(duì)于 MOVCX,LENGTHFEES匯編程序?qū)⑵湫问剑?MOVCX,100其他情況:例: ARRAYDW1,2,3對(duì)于指令 MOVCX,LENGTHARRAY匯編程序?qū)⑹蛊湫问綖椋篗OVCX,1例: TABLEDB‘ABCD’對(duì)于指令 MOVCX,LENGTHTABLE匯編程序使其形式為: MOVCX,1

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)③SIZE格式:SIZEvariable

回送分配給該變量的字節(jié)數(shù)LENGTH*TYPE例: FEESDW100DUP(0)

MOVCX,SIZEFEES

將形成:MOVCX,200例: TABLEDB‘ABCD’ MOVCX,SIZETABLE

將形成:MOVCX,1例: ARRAYDW1,2,3 MOVCX,SIZEARRAY

形成:MOVCX,2 LENGTH*TYPE=2

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)④OFFSET格式:OFFSETvariable變量或

label標(biāo)號(hào)取出變量名或標(biāo)號(hào)所在段的偏移地址例MOVBX,OFFSETyy⑤SEG格式:SEGvariable變量或label標(biāo)號(hào)取出變量名或標(biāo)號(hào)所在段的段地址

例MOVAX,SEGyy

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)bb SEGMENT

yy DB6dup(?)bb ENDScc SEGMENT ASSUMECS:cc,DS:aa,ES:bbstart

: CLD MOVAX,SEGyy MOVES,AX MOVDI,OFFSETyy

MOVCX,6 …….

cc ENDS

ENDstart

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)小結(jié):①TYPE變量的返回值是類型的字節(jié)數(shù): DB為1,DW為2,DD為4,DQ為8,DT為10;②

TYPE標(biāo)號(hào)的返回值是:

NEAR為1,F(xiàn)AR為2。③

LENGTH變量返回:

DUP分配的單元數(shù),對(duì)于其他情況則返回1。④SIZE返回值是:

LENGTH和TYPE值的乘積,即變量的字節(jié)數(shù)。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)注意:SEG、OFFSET只能對(duì)符號(hào)地址操作MOVAX,SEG[BX]MOVBX,OFFSET[SI]

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(5)綜合運(yùn)算符(PTR,THIS)

PTR用來(lái)對(duì)存貯單元規(guī)定類型格式:類型PTR表達(dá)式(或地址表達(dá)式)類型可為變量類型BYTE,WORD,DWORD

或標(biāo)號(hào)類型NEAR,FAR例:MOVBYTEPTRDATA3,ALMOVBYTEPTR[BX],10H

例1將(AL)送DATA3對(duì)應(yīng)的一個(gè)字節(jié)中,DATA3臨時(shí)定義為字節(jié)變量,原先DATA3定義的字類型沒有修改。例2是利用PTR算符明確類型不明確的地址表達(dá)式的類型。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)THIS用來(lái)規(guī)定所指變量或標(biāo)號(hào)的類型屬性或距離屬性格式:THIS類型類型可為BYTE,WORD,DWORD或距離NEARFAR

例XYZEQUTHISBYTE;將字節(jié)屬性賦予XYZFOUTEQUFAR;將距離屬性賦予FOUT(6)匯編地址計(jì)數(shù)器$

用來(lái)標(biāo)識(shí)匯編程序當(dāng)前的位置例在數(shù)據(jù)段定義的常量和變量如下

W1DWB3符號(hào)常量C1的值等于變量

B1DB’ABC’W2的個(gè)數(shù)

W2DW-4,1234HC1EQU($-W2)/2

…….

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.1.5偽指令

1)方式偽指令

2)賦植偽指令EQU3)定義變量偽指令

4)定義存儲(chǔ)單元類型的偽指令BYTE、WORDDWORD5)LABEL定義標(biāo)號(hào)名稱和屬性偽指令

6)SEG和OFFEST取段和偏移地址偽指令

7)TYPE、SIZE和LENGTH存儲(chǔ)器地址操作數(shù)類型,字節(jié)單元數(shù)

8)段定義偽指令

9)過(guò)程定義偽指令PROC,ENDP,NEAR,F(xiàn)AR10)定義結(jié)構(gòu)的偽指令STRUC/ENDS11)IFELSEENDIF條件匯編偽指令

12)邏輯運(yùn)算偽指令A(yù)ND、OR、XOR、NOT13)訪問(wèn)外部標(biāo)識(shí)符的偽指令EXTRN、PUBLIC14)源程序結(jié)束偽指令END15)常用偽指令表(p177)

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)一)賦植偽指令EQU格式

符號(hào)名EQU需等值的表達(dá)式作用是用符號(hào)名等值指定的表達(dá)式,符號(hào)名稱為符號(hào)常量其中:

表達(dá)式可以是任何有效的操作數(shù)匯編時(shí)用語(yǔ)句中的表達(dá)式代替程序中符號(hào)所在的地方。應(yīng)用:1.定義符號(hào)常量,方便修改程序。2.某表達(dá)式多次出現(xiàn)時(shí),用等值偽操作可以方便編程。3。匯編時(shí)不給符號(hào)常量分配內(nèi)存

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

(二)、變量定義偽指令

格式

變量名類型助記符操作數(shù)[,操作數(shù),...]

變量具有3個(gè)屬性,段地址,偏移地址,類型

用來(lái)定義程序中所用的內(nèi)存操作數(shù)。其中變量名指示內(nèi)存操作數(shù)的地址(段地址,偏移地址)類型助記符指示內(nèi)存操作數(shù)的類型(字節(jié)、字、雙字等)

操作數(shù)指示內(nèi)存操作數(shù)的內(nèi)容或?yàn)榈刂繁磉_(dá)式匯編程序?qū)⒍x的操作數(shù),按其類型分配內(nèi)存單元數(shù),

順序存入變量名指向的內(nèi)存單元中。常用的類型助記符有:DB

指示其后的操作數(shù)為字節(jié)類型DW

指示其后的操作數(shù)為字類型DD

指示其后的操作數(shù)為雙字類型

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

定義賦初值(常數(shù))的變量

dataSEGMENTxxDB1,-1,0fcHyyDW1,-1,0fcHzzDD1,-1,0fcHdataENDS

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)用?

表示不置初始值(原內(nèi)容保留)的內(nèi)存操作數(shù)。

ccDB?可用DUP復(fù)制操作符定義相同的操作數(shù),其格式為:重復(fù)次數(shù)DUP(操作數(shù))例

eeDB3DUP(4)等價(jià)于eeDB4,4,4

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)例

用程序?qū)崿F(xiàn)1234H+5678H

dataSEGMENTvalueDW1234H,5678HresultDW?

dataENDS

codeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;給DS賦值

MOVDS,AXMOVAX,value;取數(shù)

ADDAX,value+2;兩數(shù)相加

MOVresult,AX;保存結(jié)果

MOVAH,4CH;返回DOSINT21H

codeENDSENDstart

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(三)定義存貯單元類型的偽指令

BYTE,WORD,DWORD此類偽指令不是單獨(dú)使用,而是結(jié)合其它指令使用,以便對(duì)存貯單元類型進(jìn)行定義,例如MOVBYTEPTR[DI],00MOVWORDPTR[1000],00JMPDWORDPTR[2000]

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

若未用ASSUME語(yǔ)句指示指令中用到的標(biāo)號(hào)、過(guò)程和變量所在的段,匯編程序?qū)⒔o出錯(cuò)誤信息。

ASSUME語(yǔ)句只起指示作用,并無(wú)實(shí)際的操作。在程序中引用定義的變量做內(nèi)存操作數(shù)時(shí),需按尋址方式用傳送指令(如MOV)給相應(yīng)的段寄存器賦值。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(四)、過(guò)程定義偽操作

格式

過(guò)程名PROC類型、、、過(guò)程名ENDP

過(guò)程定義由偽操作PROC開始、ENDP結(jié)束。其中:PROC和ENDP必須成對(duì)出現(xiàn),

且語(yǔ)句前必須有過(guò)程名,過(guò)程名必須相同。

PROC和ENDP語(yǔ)句之間為子程的指令序列。程序中可以定義多個(gè)過(guò)程。程序經(jīng)匯編、連接及裝入內(nèi)存后,

過(guò)程名為一具體的內(nèi)存地址,指示子程入口。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)過(guò)程名常用作CALL調(diào)用指令的操作數(shù),

子程的最后安排RET返回指令,使執(zhí)行完子程后能返回調(diào)用處。過(guò)程有兩種類型:NEAR和FAR

無(wú)類型項(xiàng)時(shí),默認(rèn)為NEAR類型。當(dāng)過(guò)程與調(diào)用指令不在同一段時(shí),應(yīng)將過(guò)程定義為FAR類型。過(guò)程類型決定子程中RET的返回類型(與堆棧有關(guān))

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)例1displayPROC

、、、、C3H

、、

RET;NEAR屬性的過(guò)程對(duì)應(yīng)段內(nèi)返回

displayENDP例2displayPROCFAR

、、、、CBH

、、

RET;FAR屬性的過(guò)程對(duì)應(yīng)段間返回

displayENDP

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(五)結(jié)構(gòu)定義偽操作格式

結(jié)構(gòu)名稱STRUC…..由DB/DW/DD偽指令組成的指令序列結(jié)構(gòu)名稱ENDS

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(六)、程序開始和程序結(jié)束偽操作1.NAME和TITLE偽操作

格式

NAME

模塊名

格式

TITLE

模塊名在源程序開始可用NAME或TITLE為模塊命名,

模塊名的作用是指示給連接程序進(jìn)行連接用。源程序中可無(wú)模塊定義,此時(shí)源文件名作為模塊名。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)2.END偽操作

格式

END啟動(dòng)地址作用是指示源程序到此結(jié)束。匯編程序?qū)ND之后的語(yǔ)句不進(jìn)行處理。程序中所有有效語(yǔ)句應(yīng)放在END語(yǔ)句之前。源程序中必須有END結(jié)束語(yǔ)句。

匯編程序?qū)o(wú)END語(yǔ)句的源程序不進(jìn)行處理,

只給出無(wú)END語(yǔ)句錯(cuò)誤信息。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(七)、段定義偽操作

格式

段名SEGMENT[定位類型][組合類型][分類名]

、、、、、、段名ENDS

段定義由偽操作SEGMENT開始、ENDS結(jié)束。其中:SEGMENT和ENDS必須成對(duì)出現(xiàn),且語(yǔ)句前必須有段名(標(biāo)識(shí)符),段名必須相同。

SEGMENT和ENDS語(yǔ)句之間可以有指令和其他偽操作,

表示存放在該段內(nèi)存的變量、指令或其他偽操作對(duì)該段內(nèi)存的處理程序中可以定義多個(gè)段,每個(gè)段定義一個(gè)段名,代碼,數(shù)據(jù),堆棧位于不同的段中,以便匯編控制各段的定位,組合,和連接。程序經(jīng)匯編、連接及裝入內(nèi)存后,段名為一具體的段值。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)數(shù)據(jù)段,附加段,堆棧段中的語(yǔ)句,只能是偽指令語(yǔ)句,代碼段內(nèi)可為指令語(yǔ)或偽指令格式中[]內(nèi)的部分可選,

1。定位類型定義實(shí)際段起點(diǎn)的類型,有

PAGE:起始地址為256整除

PARA:起始地址為16整除

WORD:起始地址為2整除

TYPE:起始地址為任何值

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)2。組合類型表示該段和其它段的連接方法PUBLIC:可與其它同名段匯編時(shí)依次連接

COMMON:可與其它同名段匯編時(shí)共享相同的存貯空間

AT表達(dá)式:表示相應(yīng)段定位在由表達(dá)式求值得到的地址上

STACK:與PUBLIC用法相同,但僅用于堆棧段

MEMORY:表示相應(yīng)段定位在其它段之上,具有最高的地址

3。類名表示匯編時(shí)把不同模塊中的相同類名,在物理地址上依次連接起來(lái)

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)(八)、ASSUME偽操作

格式

ASSUME段寄存器:段名[,段寄存器:段名,…]

其中:段寄存器為CS、DS、ES、SS中的一個(gè)

段名為用偽操作SEGMENT定義過(guò)的段名例

ASSUMECS:cc,DS:aa,ES:aa,SS:bbASSUME偽操作的作用指示匯編程序指令中用到的標(biāo)號(hào)、過(guò)程及變量所在的段。其中對(duì)標(biāo)號(hào)、過(guò)程必須用CS段寄存器指示

對(duì)變量可用CS、DS、ES、SS段寄存器指示

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.1.6宏指令及其使用(自學(xué))

1、宏指令、宏定義和宏調(diào)用宏指令是源程序中具有獨(dú)立功能的一段程序代碼。宏定義有MASM宏匯編程序提供的偽指令實(shí)現(xiàn)。

2、宏嵌套宏定義中準(zhǔn)許使用宏調(diào)用,但所調(diào)用的宏指令必須先定義過(guò)。

3、宏定義中的標(biāo)號(hào)與變量

4、宏指令與子程序

綜上所述,當(dāng)某一需要多次訪問(wèn)的程序段較長(zhǎng),訪問(wèn)次數(shù)又不是太多時(shí),選用子程序結(jié)構(gòu)較好。當(dāng)某一需要多次訪問(wèn)的程序段較短,望問(wèn)次數(shù)又很頻繁時(shí),選用宏指令結(jié)構(gòu)更好些。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)二、匯編語(yǔ)言程序設(shè)計(jì)通常,編制一個(gè)匯編語(yǔ)言程序應(yīng)按如下步驟進(jìn)行:1)明確任務(wù),確定算法。

2)繪流程圖。

3)根據(jù)流程圖編寫匯編語(yǔ)言程序。

4)上機(jī)調(diào)試程序。程序的基本結(jié)構(gòu)有4種:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和子程序結(jié)構(gòu)。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)2.判斷程序質(zhì)量的標(biāo)準(zhǔn)程序的正確性程序的可讀性程序的執(zhí)行時(shí)間程序所占內(nèi)存大小

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.2.1順序程序設(shè)計(jì)

順序結(jié)構(gòu)也稱線形結(jié)構(gòu),其特點(diǎn)是其中的語(yǔ)句或結(jié)構(gòu)被連續(xù)執(zhí)行。它是最簡(jiǎn)單的,也是最基本的一種程序結(jié)構(gòu)形式。這種結(jié)構(gòu)的程序從開始到結(jié)束一直是順序執(zhí)行的,中途沒有任何分支。從這種結(jié)構(gòu)的流程圖來(lái)看,除了有一個(gè)起始框,一個(gè)終止框,就是若干執(zhí)行框,沒有判別框。

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)順序結(jié)構(gòu)

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.2.2分支程序設(shè)計(jì)分支程序結(jié)構(gòu)也稱條件結(jié)構(gòu),通常有兩種形式。它們的共同點(diǎn):在某一種確定條件下,只能執(zhí)行多一個(gè)分支中的一個(gè)分支,而程序的分支要靠條件轉(zhuǎn)移指令來(lái)實(shí)現(xiàn)判定條件S1S2判定條件S1S2Sn

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)兩個(gè)分支YN

、、、

CMPAL,BLJGgreat

JMPexitgreat:

exit:、、、、、、

AL≤BL處理AL>BL處理

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)三個(gè)分支YYNN分支結(jié)構(gòu)

、、、

CMPAL,0

JGgreat

JLless

JMPexitless:

JMPexitgreat:

exit:

、、、AL=0處理AL>0處理AL<0處理

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.2.3循環(huán)程序設(shè)計(jì)在程序設(shè)計(jì)中常碰到某些操作需多次重復(fù)進(jìn)行的情況,這時(shí)采用循環(huán)設(shè)計(jì)方法最為合適。常見的循環(huán)程序結(jié)構(gòu)有兩種:WHILE_DO結(jié)構(gòu)和DO_UNTIL結(jié)構(gòu)。前者的主要設(shè)計(jì)思想是,當(dāng)循環(huán)控制條件滿足時(shí),循環(huán)執(zhí)行;否則退出循環(huán)。后者主要設(shè)計(jì)思想是,先執(zhí)行循環(huán)體程序,再判循環(huán)控制條件是否滿足。若不滿足則再次執(zhí)行循環(huán)體程序;否則退出循環(huán)。循環(huán)初始狀態(tài)循環(huán)控制條件循環(huán)體循環(huán)初始狀態(tài)循環(huán)體循環(huán)控制條件

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.2.4子程序設(shè)計(jì)在8086/8088匯編語(yǔ)言中,子程序又稱過(guò)程。它相當(dāng)于高級(jí)語(yǔ)言的過(guò)程和函數(shù),是一個(gè)獨(dú)立的程序段,能完成某些確定的功能,并能被其他程序調(diào)用。當(dāng)一個(gè)子程序被調(diào)用,且該子程序完成確定的功能后便返回調(diào)用程序處。1.過(guò)程的定義和調(diào)用2.寄存器內(nèi)容的保護(hù)和恢復(fù)3.主程序和過(guò)程間的參數(shù)傳送4.過(guò)程的嵌套、遞歸調(diào)用和可重入性5.常用子程序舉例

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)1.多處調(diào)用完成同一功能的子程:codeSEGMENTstart:、、

CALLsubp

、、

CALLsubp

、、

CALLsubp

、、

MOVAH,4CHINT21HsubpPROC

、、、、

RETsubpENDPcodeENDSENDstart2.模塊化程序設(shè)計(jì):codeSEGMENTbegin:CALL

sub1

CALLsub2

CALLsub3MOVAH,4CHINT21Hsub1PROC

、、

RETsub1ENDPsub2PROC

、、

RETsub2ENDPsub3PROC

、、

RETsub3ENDPcodeENDSENDbegin

子程結(jié)構(gòu)注意返回DOS語(yǔ)句位置

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.2.5多模塊程序設(shè)計(jì)多模塊程序設(shè)計(jì)也稱模塊化程序設(shè)計(jì)。采用程序設(shè)計(jì)方法要將復(fù)雜的程序劃分許多程序模塊,每個(gè)模塊完成明確規(guī)定的任務(wù),是整個(gè)大程序的較為獨(dú)立的一部分。在多模塊程序設(shè)計(jì)過(guò)程中,可對(duì)各個(gè)程序模塊單獨(dú)進(jìn)行匯編產(chǎn)生相應(yīng)的各目標(biāo)模塊,最后再由連接程序?qū)⒏髂繕?biāo)模塊連接來(lái)構(gòu)成一個(gè)完整的可執(zhí)行程序。1.多模塊的連接2.模塊間標(biāo)識(shí)符的交叉訪問(wèn)

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)6.3匯編程序及上機(jī)過(guò)程6.3.1匯編語(yǔ)言源程序的匯編、連接和裝入DOS操作系統(tǒng)EDITDEBUGI/O驅(qū)動(dòng)程序.ASM源程序文件.OBJ程序文件.EXE程序文件調(diào)試、執(zhí)行程序匯編程序連接程序連接程序.LST可打印文件.LIB庫(kù)程序文件.MAP文件其他.OBJ文件命令程序

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)

匯編語(yǔ)言上機(jī)過(guò)程上機(jī)環(huán)境硬件系統(tǒng)軟件

應(yīng)用軟件

操作系統(tǒng):DOS系統(tǒng)編輯器:

EDIT.exe編程序:MASM.exe連接程序:LINK.exe調(diào)試程序:DEBUG.exe用戶開發(fā)的程序:ABC.exe等CPU、存儲(chǔ)器(ROM、RAM)、I/O接口、輸入、輸出設(shè)備

武漢理工通信原理第六章匯編語(yǔ)言程序設(shè)計(jì)dataSEGMENT

;數(shù)據(jù)段varDB?dataENDScodeSEGMENT

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論