版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《工程設(shè)備復(fù)習(xí)》課件
- 心電信號(hào)識(shí)別技術(shù)-洞察分析
- 文物保護(hù)國(guó)際合作與交流-洞察分析
- 文本轉(zhuǎn)換的語(yǔ)義依賴規(guī)則研究-洞察分析
- 形式化方法在中綴轉(zhuǎn)后綴轉(zhuǎn)換中的應(yīng)用研究-洞察分析
- 物聯(lián)網(wǎng)安全防護(hù)-第1篇-洞察分析
- 特種水泥性能優(yōu)化-洞察分析
- 初級(jí)職稱個(gè)人專業(yè)技術(shù)工作總結(jié)范文(12篇)
- 醫(yī)學(xué)圖像增強(qiáng)與降噪算法-洞察分析
- 網(wǎng)絡(luò)切片技術(shù)在行業(yè)專網(wǎng)的應(yīng)用研究-洞察分析
- 一般自我效能感量表及計(jì)分方式
- (完整版)機(jī)加中心績(jī)效考核方案
- 世界旅游夏威夷英文介紹簡(jiǎn)介English introduction of Hawaii(課堂PPT)
- 個(gè)人簡(jiǎn)歷表格標(biāo)準(zhǔn)模板(Word)
- 安全生產(chǎn)中長(zhǎng)期規(guī)劃
- 日標(biāo)歐標(biāo)英標(biāo)O型圈匯總
- 兒童相聲《沒考好》
- 777F02板型尺寸及ULD組裝高教知識(shí)
- 國(guó)家機(jī)構(gòu)結(jié)構(gòu)圖季宏
- 土木工程可持續(xù)發(fā)展調(diào)查報(bào)告
- 古代文學(xué)論文論陳寅恪文史互證對(duì)《鶯鶯傳》文本解讀的價(jià)值
評(píng)論
0/150
提交評(píng)論