、俣ㄎ活(lèi)型
用于指定該段地址中的5種可供選擇段起點(diǎn)的邊界類(lèi)型,如下表所示。
定位類(lèi)型
定位類(lèi)型 含 義
BYTE(字節(jié)) 段的起始地址可以任意
WORD(字)
段的起始地址必須為偶數(shù),即該地址的最低二進(jìn)制位應(yīng)為0
DWORD(雙字) 段的起始地址必須為4的倍數(shù),即該地址的最后2位二進(jìn)制位應(yīng)為0,通?偸前袲WORD用于80386的32位段中
PARA(節(jié)) 段的起始地址必須為16的倍數(shù),即該地址的最后4位二進(jìn)制位應(yīng)為0
PAGE(頁(yè)) 段的起始地址必須為256的倍數(shù),即該地址的最后8位二進(jìn)制位應(yīng)為0
這個(gè)類(lèi)型可以為標(biāo)號(hào)或變量賦予絕對(duì)地址,以便程序以標(biāo)號(hào)或變量的形式存取這些存儲(chǔ)器單元的內(nèi)容。通常情況下,在AT類(lèi)型的段中不定義指令或數(shù)據(jù),只是說(shuō)明一個(gè)地址結(jié)構(gòu)。②組合類(lèi)型
用來(lái)告訴連接程序LINK,本段與其他模塊中同名段的組合連接關(guān)系。共有下表所示的5種可供選擇的組合類(lèi)型。如果此屬性缺省,則表示該段是獨(dú)立的,不與其他同名段發(fā)生聯(lián)系,并有自己的段起始地址。
組合類(lèi)型
組合類(lèi)型 含 義
PUBLIC 鏈接程序LINK將不同模塊中具有該類(lèi)型且段名相同的段連接到同一個(gè)物理存儲(chǔ)段中,使它們公用一個(gè)段地址
STACK 與PUBLIC的處理方式一樣,只是連接后的段為堆棧段,鏈接程序LINK在鏈接過(guò)程中自動(dòng)將新段的段地址送到堆棧段寄存器SS,將新段的長(zhǎng)度送到堆棧指針寄存器SP。如果在定義堆棧時(shí)沒(méi)有將其說(shuō)明為STACK類(lèi)型,在這種情況下就需要在程序中用指令給堆棧段寄存器SS、堆棧指針寄存器SP置值,這時(shí)鏈接程序LINK會(huì)給出一個(gè)警告信息
COMMON 產(chǎn)生一個(gè)覆蓋段。鏈接程序LINK為該類(lèi)型的同名段指定相同的段地址。段的長(zhǎng)度取決于最長(zhǎng)的COMMON段的長(zhǎng)度。段的內(nèi)容為所連接的最后一個(gè)模塊中COMMON段的內(nèi)容及其沒(méi)有被覆蓋到的前面COMMON段的部分內(nèi)容
MEMORY 鏈接程序LINK不單獨(dú)區(qū)分MEMORY類(lèi)型,它把MEMORY與PUBLIC類(lèi)型同等對(duì)特。MASM程序允許使用它,主要是為了與其他支持Intel MEMOˉRY類(lèi)型的連接程序兼容
AT表達(dá)式 鏈接程序LINK將具有AT類(lèi)型的段裝在表達(dá)式值所指定的段地址邊界上
、垲(lèi)別
用于控制段的存放次序。它可以是任何合法的名稱(chēng),但必須用單引號(hào)括起來(lái)。連接程序LINK只使同類(lèi)別的段發(fā)生關(guān)系,并將它們存放在連續(xù)的存儲(chǔ)空間中。若“類(lèi)別”選擇項(xiàng)缺省,則表明該段類(lèi)別為空。
(2)ASSUME語(yǔ)句
格式:ASSUME 段寄存器:段名[,段寄存器:段名,]
功能:告訴匯編程序,程序的段結(jié)構(gòu)和在各種指令執(zhí)行時(shí)訪問(wèn)哪一段。段寄存器只能是CS、SS、DS、ES中的一個(gè),段名是由偽指令SEGMENT/ENDS語(yǔ)句中定義的段名。注意:
●代碼段寄存器CS只能用于有程序的段。代碼段寄存器CS所對(duì)應(yīng)的段名必須在該語(yǔ)句之前有定義,因此,ASSUME語(yǔ)句一般都設(shè)置于代碼段內(nèi),放在段定義語(yǔ)句之后。
●堆棧段寄存器SS只能與堆棧段相對(duì)應(yīng)。
●ASSUME語(yǔ)句是說(shuō)明性語(yǔ)句,除主程序的代碼段及最后一個(gè)椎棧段外,其余段寄存器的初值均由用戶(hù)在程序中設(shè)置。
(3)組定義偽指令 GROUP
格式:組名GROUP 段名[,段名,……]
功能:將GROUP定義符后指定的所有段分配在一個(gè)64KB的物理存儲(chǔ)器段中,并賦予該段一個(gè)名字———組名。說(shuō)明:
●組名是用戶(hù)自己定義的名字,是指出組的起始地址的一種符號(hào)。這個(gè)符號(hào)必須是惟一的,不能與任何標(biāo)號(hào)、段名及變量名等同名。
●段名是用SEGMENT語(yǔ)句定義的或者由SEG運(yùn)算符得到的段名。
●組定義語(yǔ)句不影響各段的次序,因此組內(nèi)各段不一定要連續(xù)存放,但它們都必須包含在64KB物理存儲(chǔ)器段中。
●當(dāng)源程序結(jié)構(gòu)需要多個(gè)邏輯段時(shí),使用該語(yǔ)句可節(jié)省段寄存器。
●實(shí)際應(yīng)用中最好是讓代碼段為一組,堆棧段為一組,數(shù)據(jù)段為一組或兩組,但組中各段所占用的內(nèi)存儲(chǔ)器的總量不超過(guò)64KB。
(4)指定地址偽指令 ORG格式:ORG 表達(dá)式
ORG $+偏移地址
功能:指定該語(yǔ)句之后程序段或數(shù)據(jù)塊的起始地址的偏移量,即語(yǔ)句表達(dá)式的值作為起始地址,連續(xù)存放程序和數(shù)據(jù),直到下一個(gè)ORG語(yǔ)句為止。
5.過(guò)程定義偽指令
在程序設(shè)計(jì)中,常把具有一定功能的程序段設(shè)計(jì)成為一個(gè)過(guò)程。過(guò)程是程序的一部分,它可以被程序調(diào)用。每次可調(diào)用一個(gè)過(guò)程,當(dāng)過(guò)程中的指令執(zhí)行完后,控制返回調(diào)用它的地方。過(guò)程定義語(yǔ)句的格式:
過(guò)程名 PROC [NEAR或FAR]
┇
(語(yǔ)句)
┇ RET
過(guò)程名 ENDP說(shuō)明:
●過(guò)程名是給過(guò)程起的名字,調(diào)用過(guò)程時(shí),過(guò)程名起標(biāo)號(hào)的作用。
●偽指令PROC和ENDP必須成對(duì)出現(xiàn),限定一個(gè)過(guò)程,并說(shuō)明該過(guò)程是NEAR過(guò)程還是FAR過(guò)程。
●在宏匯編中,過(guò)程調(diào)用和從過(guò)程返回使用CALL和RET。
●有兩種調(diào)用方式:段內(nèi)調(diào)用和交*調(diào)用。如果以用段內(nèi)CALL指令調(diào)用過(guò)程則必須用段內(nèi)RET指令返回,這樣的過(guò)程是NEAR過(guò)程,用段交*CALL指令調(diào)用過(guò)程,則必須做段交*RET指令返回,這樣的過(guò)程是FAR過(guò)程。
●在一個(gè)過(guò)程中可以有多于一個(gè)的RET指令,并且過(guò)程中最后一條指令可以不是RET,但必須是一條轉(zhuǎn)移過(guò)程中某處的轉(zhuǎn)移指令。
●主程序和子程序都可以作為一個(gè)過(guò)程。
6.結(jié)束語(yǔ)句
格式:END 表達(dá)式
功能:結(jié)束整個(gè)源程序。
說(shuō)明:表達(dá)式必須產(chǎn)生一個(gè)存儲(chǔ)器地址。這個(gè)地址是當(dāng)程序執(zhí)行時(shí),程序第一條要執(zhí)行指令的地址。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢(xún)時(shí)間匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |