(二)高級匯編偽指令語句1.結(jié)構(gòu)和記錄
(1)結(jié)構(gòu)
、俳Y(jié)構(gòu)類型數(shù)據(jù)定義偽指令
80x86宏匯編使用偽指令STRUC和ENDS建立一種結(jié)構(gòu)類型的數(shù)據(jù),然后通過結(jié)構(gòu)類型數(shù)據(jù)的預(yù)置,便可方便地訪問結(jié)構(gòu)中的各數(shù)據(jù)項,而不需要對操作數(shù)地址表達式進行繁鎖的計算。 結(jié)構(gòu)類型數(shù)據(jù)定義的格式: 結(jié)構(gòu)名 STRUC
┆
字段名 數(shù)據(jù)定義偽指令定義符 表達式
┆
結(jié)構(gòu)名 ENDS
說明:結(jié)構(gòu)類型數(shù)據(jù)是用STRUC和ENDS括起來的數(shù)據(jù)定義語句序列,這時數(shù)據(jù)定義語句中的符號稱為字段名。注意:
●定義結(jié)構(gòu)時,STRUC和ENDS必須成對出現(xiàn),缺一不可。
●結(jié)構(gòu)名是為結(jié)構(gòu)起的名字,是任意選定的。
●同時在同一結(jié)構(gòu)定義中,字段名不得重名。
、诮Y(jié)構(gòu)變量說明與賦初值
結(jié)構(gòu)類型數(shù)據(jù)的定義只是告訴匯編程序已存在這樣一種形式的變量,還必須對結(jié)構(gòu)進行存儲分配和預(yù)置后才能真正產(chǎn)生結(jié)構(gòu)數(shù)據(jù)的變量。結(jié)構(gòu)類型數(shù)據(jù)預(yù)置的格式:
結(jié)構(gòu)變量名 結(jié)構(gòu)名 <字段值表>說明:
●DATAMAX和DATATXN是結(jié)構(gòu)變量名。
●結(jié)構(gòu)變量名是任意的,由程序員自行設(shè)定。
●結(jié)構(gòu)變量名與具體的存儲空間和數(shù)據(jù)相聯(lián)系,在程序中可直接引用。
●字段值表用來給結(jié)構(gòu)變量賦初值,字段值必須用尖括號括起來,其排列順序和類型應(yīng)該與結(jié)構(gòu)定義時的各字段相一致,各字段值之間用逗號隔開。如果采用定義結(jié)構(gòu)時的初值,則僅寫一個逗號;若所有字段采用定義時的初值,則僅寫一對尖括號。
注意:并不是所有的字段都可以重新賦初值,只有一項數(shù)據(jù)的字段可重新賦值。在程序中引用結(jié)構(gòu)變量,可直接寫結(jié)構(gòu)變量名:引用結(jié)構(gòu)變量的某一字段時,要采用下述格式:結(jié)構(gòu)變量名.字段名
(2)記錄
記錄是一種處理按位計算信息的數(shù)據(jù)類型。記錄定義的格式:
記錄名 RECORD 字段名:寬度[=表達式][,……]說明:
●記錄名和字段名必須具有惟一性;
●寬度表示字段所占的位數(shù)(1~16位),如果各字段的寬度和大于8位,那么匯編程序按字處理,否則按字節(jié)處理。若總值數(shù)少于8位或16位,則所有字段都右對齊到字或字節(jié)的最低有效位置。表達式賦給相應(yīng)字段的初值,是可選擇的。
●記錄的各字段寬度之和不得大于16位。記錄也必須經(jīng)過預(yù)置才能產(chǎn)生記錄類型數(shù)據(jù)變量,才能真正占有內(nèi)存。記錄預(yù)置的格式:
記錄變量名 記錄名 <字段值表>
說明:字段值表是賦給各字段的初值,必須用尖括號括起來,表中各項間用逗號分隔,各項順序應(yīng)與記錄定義時相一致。若某字段采用時的初值,則該字段用逗號表示;若各字段均采用定義時的初值,則僅用尖括號。
對記錄進行操作的專用操作符有3個,即:記錄字段名,WIDTH和MASK。①記錄字段名
這個操作符無操作數(shù),可直接引用,它的結(jié)果是一個立即數(shù),表示該字段的最低位移到所在記錄最右邊(0位)所需的移位次數(shù)。②WIDTH
返回記錄或記錄某字段的寬度。
格式:WIDTH 記錄名或記錄字段名③MASK
格式:MASK 記錄字段名
MASK的結(jié)果是一個8位或16位二進制數(shù),這個二進制數(shù)中相應(yīng)于該字段的各位均是1,其余各位均是0。
記錄操作符可以與運算符NOT、OR、AND、SHL、SHR配合使用。
關(guān)于記錄、記錄字段及記錄變量的調(diào)用,由于記錄有自己專用的操作符,故利用這些操作符可對記錄及其字段進行操作。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |