八、80x86宏匯編語(yǔ)言的數(shù)據(jù)和表達(dá)式
(一)常數(shù)
在宏匯編中,允許使用的常數(shù)有:
● 二進(jìn)制常數(shù)
● 十進(jìn)制常數(shù)
● 八進(jìn)制常數(shù)
● 十六進(jìn)制常數(shù)
● 十進(jìn)制科學(xué)記數(shù)法
● 串常數(shù)
(二)變量
變量用于定義存儲(chǔ)器中的數(shù)據(jù),這些數(shù)據(jù)在程序運(yùn)行過(guò)程中可隨機(jī)修改。為了便于對(duì)變量的訪問(wèn),變量常常以變量名的形式出現(xiàn)在程序中。變量名可以認(rèn)為是存放數(shù)據(jù)的存儲(chǔ)單元號(hào)地址。變量的三個(gè)屬性是:
(1)段屬性
指變量所在段的段基址。
(2)偏移地址屬性
指變量所在段中的偏移量,即變量所在地址與段基址之間的字節(jié)距離。
(3)類(lèi)型屬性
指變量占用存儲(chǔ)單元的字節(jié)數(shù)。占用1個(gè)字節(jié)的稱(chēng)為字節(jié)變量,其類(lèi)型BYTE;占用2個(gè)字節(jié)的稱(chēng)為字變量,其類(lèi)型為WORD;占用4個(gè)字節(jié)的稱(chēng)為雙字變量,其類(lèi)型為DWORD。此外,還有8字節(jié)(即4個(gè)字)變量和10字節(jié)變量,它們分別占用8個(gè)字節(jié)存儲(chǔ)單元和10個(gè)字節(jié)存儲(chǔ)單元,其類(lèi)型為QWORD和TBYTE。
變量可以用偽指令DB、DW、DD、DZ、DT進(jìn)行定義。
(三)標(biāo)號(hào)
標(biāo)號(hào)是給指令性語(yǔ)句所在地址取的名字,和變量一樣,標(biāo)號(hào)有三個(gè)屬性:
(1)段屬性
(2)偏移地址屬性
(3)類(lèi)型屬性
(四)表達(dá)式和運(yùn)算符
宏匯編中有三種運(yùn)算符:算術(shù)運(yùn)算符、邏輯運(yùn)算和關(guān)系運(yùn)算符。
1.算術(shù)運(yùn)算符
算術(shù)運(yùn)算符包括加(+)、減(-)、乘(*)、除(/)、模除(MOD)、左移(SHL)和右移(SHR)七種。+、-、*、/是常用的運(yùn)算符,參加運(yùn)算的數(shù)和運(yùn)算結(jié)果均為整數(shù)。除法運(yùn)算的結(jié)果取商的整數(shù)部分,而模除的運(yùn)算結(jié)果只取它的余數(shù)。左移或右移運(yùn)算符可使二進(jìn)制數(shù)左移或右移若干位,相當(dāng)于二進(jìn)制數(shù)進(jìn)行乘法或除法運(yùn)算,因此也把它們作為算術(shù)運(yùn)算符。
2.邏輯運(yùn)算符
邏輯運(yùn)算符包括AND(與)、OR(或)、XOR(異或)、NOT(非)四種。它們只適用于對(duì)常量進(jìn)行邏輯運(yùn)算。注意,表達(dá)式中的邏輯運(yùn)算符只能出現(xiàn)在語(yǔ)言的操作數(shù)部分并且是在匯編時(shí)完成運(yùn)算的。
3.關(guān)系運(yùn)算符
關(guān)系運(yùn)算符包括EQ(相等)、NE(不等)、LT(小于)、(GT)大于、LE(小于或等于)、GE(大于或等于)6種運(yùn)算。關(guān)系運(yùn)算符是用于比較兩類(lèi)的大小,要求兩個(gè)操作數(shù)都是數(shù)字或者是同一段中的兩個(gè)地址值。比較的結(jié)果用邏輯值表示。關(guān)系運(yùn)算符與邏輯運(yùn)算符常結(jié)合在一起使用。
4.數(shù)值回送運(yùn)算符
數(shù)值回送運(yùn)算符分為兩類(lèi):一類(lèi)是將指定的變量名或標(biāo)號(hào)地址的有關(guān)內(nèi)容賦給指令,如OFFSET和SEG;另一類(lèi)有3種:TYPE,LENGTH和SIZE,將變量名或標(biāo)號(hào)的一些特征傳送給指令。
(1)OFFSET
格式: OFFSET 變量或標(biāo)號(hào)
匯編程序?qū)⒒厮妥兞炕驑?biāo)號(hào)所在地址的偏移量給該指令。
(2)SEG
格式: SEG 變量或標(biāo)號(hào)
匯編程序?qū)⒒厮妥兞炕驑?biāo)號(hào)所在地址的段地址給該指令。
(3)TYPE格式: TYPE 變量或標(biāo)號(hào)
用來(lái)確定標(biāo)號(hào)或變量的類(lèi)型,并根據(jù)類(lèi)型作為一個(gè)操作數(shù)回送給指令。匯編中規(guī)定,如果是變量,則根據(jù)DB、DW、DD、DQ和DT分別用數(shù)值1、2、4、8和10回送給指令。如果是標(biāo)號(hào),根據(jù)標(biāo)號(hào)的類(lèi)型用-1和-2分別代表NEAR和FAR。
(4)LENGTH
格式: LENGTH 變量名
用來(lái)回送變量名下定義的數(shù)據(jù)項(xiàng)數(shù)目。值得注意的是它只對(duì)用DUP定義的數(shù)據(jù)起作用,凡沒(méi)使用DW的回送值均為1。
(5)SIZE
格式: SIZE 變量名
用來(lái)回送為該變量名分配的字節(jié)數(shù)?梢(jiàn)SIZE應(yīng)是TYPE和LENGTH值的乘積。
5.指定屬性操作符
指定屬性操作符有PTR和THIS等6種。它們的功能是建立一些新的存儲(chǔ)器地址操作數(shù),即新的變量、標(biāo)號(hào)或地址表達(dá)式。
(1)PTR
格式:類(lèi)型 PTR 表達(dá)式
說(shuō)明:類(lèi)型可以是BYTE、WORD、DWORD、NEAR、FAR等,表達(dá)式可以是某個(gè)變量、標(biāo)號(hào)或地址表達(dá)式。
功能:建立一個(gè)新的存儲(chǔ)器地址操作數(shù),但不分配內(nèi)存。新操作數(shù)與PTR右邊的存儲(chǔ)器地址作數(shù)有相同的段地址和偏移量,類(lèi)型為PTR左邊規(guī)定的類(lèi)型。因些,實(shí)際上,PTR操作符可給變量、標(biāo)號(hào)或地址表達(dá)式定義新的名字和類(lèi)型。
(2)THIS
格式:THIS 類(lèi)型
功能:定義當(dāng)前單元類(lèi)型的操作符。
(3)SHORT
格式:JMP SHORT DES
功能:確定轉(zhuǎn)移地址的屬性,用在JMP指令中,規(guī)定轉(zhuǎn)移范圍在-128~+127個(gè)字節(jié)內(nèi)。
(4)HIGH和LOW
兩個(gè)字節(jié)選取操作符。在指令中用在字操作數(shù)之前,指定取該字的高字節(jié)或低字節(jié)參與運(yùn)算。
(5)段屬性
利用“段寄存器:地址表達(dá)式”的形式改變操作數(shù)的地址表達(dá)式所屬段的特性。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試三級(jí)PC技術(shù)常見(jiàn)系統(tǒng)命令行北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |