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