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