資源描述:
《匯編語言第4章匯編語言.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章匯編語言4.1.1匯編語言語句分類匯編語言程序的基本組成單位是語句。在8086宏匯編MASM中使用的語句有三種類型:指令語句、偽指令語句和宏指令語句。其中指令語句和偽指令語句是最常見、最基本的語句。4.1.1匯編語言語句分類(1)指令語句每條指令語句都要產(chǎn)生相應(yīng)的機(jī)器語言目標(biāo)代碼,對(duì)應(yīng)著機(jī)器的一種操作。用于指示匯編語言如何將源程序進(jìn)行匯編工作,如程序如何分段,有哪些邏輯段,哪些(2)偽指令語句邏輯段是當(dāng)前段以及內(nèi)存單元如何分配等。偽指令語句的功能在匯編階段已經(jīng)全部完成,所以不產(chǎn)生相應(yīng)的目標(biāo)代碼。(3)宏指令語句宏指令是編程人員按照一定的規(guī)則來編寫的可供調(diào)用的一種指令。一般來講,一條宏指令
2、可以包括多條指令或偽指令。4.1.2匯編語言語句格式匯編語言的語句可以由名字、操作符、操作數(shù)和注釋4部分組成,一般格式如下:[名字]操作符[操作數(shù)][;注釋]各個(gè)組成部分之間以空格分隔,它們的含義如下:(1)名字指令語句的名字是標(biāo)號(hào),必須以冒號(hào)“:”結(jié)束。標(biāo)號(hào)是一條指令的符號(hào)地址,代表該指令代碼的起始字節(jié)單元地址。并不是每條指令都需要標(biāo)號(hào),只有在循環(huán)或分支入口語句前面選用標(biāo)號(hào),以便給循環(huán)或轉(zhuǎn)移指令提供轉(zhuǎn)向地址。偽指令語句中的名字可以是變量名、過程名、段名和符號(hào)名等,偽指令語句的名字不可以冒號(hào)“:”結(jié)束。4.1.2匯編語言語句格式(2)操作符操作符就是各種指令助記符。它可以是指令、偽指令或宏指令
3、。(3)操作數(shù)不同的指令、偽指令所需的操作數(shù)個(gè)數(shù)不盡相同,可能是0個(gè)、1個(gè)或多個(gè)。若需多個(gè)操作數(shù),各個(gè)操作數(shù)之間要用逗號(hào)“,”或空格分隔。(4)注釋注釋是以分號(hào)“;”開始的任意字符串。可以寫在一條語句的后面,也可以獨(dú)占一行。其功能一般是對(duì)指令或程序段的功能和意義等加以解釋說明,好的注釋可以提高程序的可讀性和可維護(hù)性。匯編時(shí)注釋不產(chǎn)生目標(biāo)代碼。4.2符號(hào)定義語句有時(shí)程序中會(huì)多次出現(xiàn)同一個(gè)表達(dá)式,可以用符號(hào)定義語句給該表達(dá)式定義一個(gè)符號(hào),這樣既便于引用,又減少了程序修改量,而且還能夠提高源程序的可讀性。匯編后該符號(hào)代表一個(gè)確定的值。4.2.1等值語句格式:符號(hào)名EQU表達(dá)式功能:給表達(dá)式或表達(dá)式的
4、值賦予一個(gè)符號(hào)名,定義后,程序中可以用該符號(hào)名代表該表達(dá)式。說明:表達(dá)式可以是常數(shù)、數(shù)值表達(dá)式、另一個(gè)符號(hào)名或助記符等。用EQU語句定義的符號(hào)名在同一個(gè)程序中不允許重復(fù)定義。VALEQUTABLE1;VAL代替變量TABLE1ADDREQU[BP+SI+100H];ADDR代替地址表達(dá)式[BP+SI+100H]AEQUAX;A代替寄存器AXMOVEEQUMOV;MOVE代替指令助記符MOV例如:COUNTEQU50;COUNT代替常數(shù)50COUNTEQU50*25;SUM代替數(shù)值表達(dá)式50*254.2.2等號(hào)語句格式:符號(hào)名=表達(dá)式功能:與等值語句的功能基本相同,不同之處僅在于等號(hào)語句中的表達(dá)
5、式只能是常數(shù)或數(shù)值表達(dá)式表達(dá)式,等值語句中的表達(dá)式可以是常數(shù)、數(shù)值表達(dá)式、另一個(gè)符號(hào)名或助記符等;另外,在同一個(gè)程序中等號(hào)語句可以對(duì)一個(gè)符號(hào)重復(fù)定義,而等值語句不能對(duì)同一個(gè)符號(hào)重復(fù)定義。例如:COUNT1=50;COUNT1代替常數(shù)50COUNT1=100*20;重新定義COUNT1COUNT2EQU100*30;錯(cuò)誤,EQU不能對(duì);COUNT2重復(fù)定義COUNT2EQU100;COUNT2代替常數(shù)504.2.3解除定義語句PURGE格式:PURGE符號(hào)名1,符號(hào)名2,…,符號(hào)名n功能:解除指定符號(hào)的定義。例如:COUNTEQU100;COUNT代替常數(shù)100PURGECOUNT;解除對(duì)符號(hào)C
6、OUNT的定義COUNTEQU100*30;重新定義COUNT4.3數(shù)據(jù)定義語句數(shù)據(jù)定義偽指令為數(shù)據(jù)項(xiàng)分配存儲(chǔ)單元,用一個(gè)符號(hào)名與這個(gè)存儲(chǔ)單元相聯(lián)系且為這個(gè)數(shù)據(jù)提供一個(gè)任選的初始值。也可以只給變量分配存儲(chǔ)單元,而不賦予特定的值。常用的數(shù)據(jù)定義偽指令有DB、DW、DD、DQ和DT等。數(shù)據(jù)定義偽指令的一般格式為:格式:[變量名]數(shù)據(jù)定義偽指令初始化參數(shù)表4.3數(shù)據(jù)定義語句說明:(1)如果此處給出了“變量名”,也就定義了一個(gè)變量。變量名是該數(shù)據(jù)區(qū)的符號(hào)地址。在指令中通常利用變量名來引用內(nèi)存單元。(2)數(shù)據(jù)定義偽指令DB、DW、DD、DQ和DT所分配的內(nèi)存單元的長(zhǎng)度也不同。偽指令內(nèi)存單元類型單元所占字
7、節(jié)數(shù)DBBYTE(字節(jié)型)1DWWORD(字型)2DDDWORD(雙字型)4DQQWORD(4字型)8DTTBYTE(10字節(jié)型)104.3數(shù)據(jù)定義語句(3)初始化參數(shù)表可以包含任意多個(gè)初始化參數(shù)。如果有多個(gè)初始化參數(shù)時(shí),相互之間應(yīng)該用逗號(hào)“,”分開。每個(gè)參數(shù)能夠初始化一個(gè)內(nèi)存單元,它們可以是以下5種形式:①?:僅為變量預(yù)留一個(gè)存儲(chǔ)單元而不對(duì)該單元進(jìn)行初始化。例如:BUF1DB?BUF2DW56H