標籤: 暫無標籤

數值表達式是指評估為數字的任意表達式。該表達式可以是變數、常量、函數和運算符的任意組合。主要包括常量、算術運算符、關係運算符、邏輯運算符等。

1相關內容

算術運算符
算術運算符包括符號:+(正)、-(負),運算符:+(加)、-(減)、*(乘)、/(除)和MOD(取模)。這些運算符和常量、括弧可組成數值表達式。
如:120+(321-90) mod 3,322*5/32,0abcdH+5,-590等
邏輯運算符
邏輯運算符包括按位操作符和移位操作符。具體是:AND(邏輯與)、OR(邏輯或)、NOT(邏輯非)、XOR(異或)、SHL(左移位)和SHR(右移位)。這些邏輯運算符和常量、括弧可組成數值表達式。
如:1 SHL 3,47H AND 0FH,NOT 56H等,它們的計算結果分別為:8,7和0A9H。

2表達式中的其它操作符

彙編語言中,還有其它可在數值表達式中使用的操作符。它們是:
、HIGH(高8位)、LOW(低8位)
、SEG(段地址)、OFFSET(偏移量)
、TYPE(標識符類型)、LENGTH(變數長度)、SIZE(變數容量)
、WIDTH(記錄/記錄欄位寬度)、MASK(記錄/記錄欄位的屏蔽位)等
在以上操作符中,只有HIGH和LOW沒有介紹過,它們分別是選取表達式計算結果的高8位和低8位。其使用格式如下:
HIGH 表達式   LOW 表達式
如:HIGH (1234H+100H),LOW 1234H等,它們的選取結果分別為:13H和34H。

3運算符和操作符的優先順序

在彙編語言中,有許多各種運算符和操作符,它們的優先順序按從高到低的排列如下:
優先順序:高
LENGTH、SIZE、WIDTH、MASK、()、[]、.(用於結構欄位)、<>(用於記錄類型)
PTR、SEG、OFFSET、TYPE、THIS、:(用於段超越前綴)
*、/、MOD、SHL、SHR
HIGH、LOW
+、-
EQ、NE、LT、LE、GT、GE
NOT
AND
OR、XOR
優先順序:低
SHORT
MASM 表達式中的數值
MASM 表達式中的數值能夠以 16, 10, 8 或者 2 為基數方式輸入。
n (Set Number Base) 命令可用來設置預設基數為 16, 10 或者 8。所有不帶前綴的數值都以該基數來解釋。通過指定 0x 前綴(十六進位),0n 前綴(十進位),0t 前綴(八進位),或者 0y 前綴(二進位)能夠掩蓋預設基數。也可以添加一個 h 後綴表示十六進位數值。數值裡面的字母可以是大寫或者小寫,所以 "0x4AB3", "0X4aB3", "4AB3h", "4ab3h" "4aB3H" 都表示相同意思。
如果表達式中前綴後面沒有跟一個數值,它被讀作 0。所以,0 可以寫成三種形式:0,前綴後面跟一個 0,單獨一個前綴。例如,在十六進位下,"0", "0x0" 和 "0x" 都表示相同意思。
能夠以 xxxxxxxx`xxxxxxxx 格式輸入 64 位的十六進位數值,或者忽略當中的重音符號(`)。包含重音符號會使得自動符號擴展無效,詳細請看符號擴展。
MASM 表達式中的數值運算符
表達式的任意組件都可以用一元運算符來修改,任意兩個組件都可以用二元運算符組合起來。一元運算符優先於二元運算符。當用到多個二元運算符時,遵循已定的優先順序規則。
總是可以用圓括弧來掩蓋優先順序規則。
如果 MASM 表達式的某一部分被圓括弧括住並有兩個 @ 前綴 - @@( ... )  - 該部分將根據 C++ 表達式規則來解析。在兩個 @ 記號之間以及和左圓括弧之間不能有空格。也可以通過使用 @@c++( ... ) 或者 @@masm( ... ) 指定表達式求解器。
當執行算術運算時,MASM 表達式求解器把所有的數值和符號當做 ULONG64 類型。
一元地址運算符定址時假定 DS 為預設段。按運算符的優先順序順序計算表達式。如果兩個相鄰的運算符優先順序一樣,則從左往右計算表達式。
上一篇[宇宙侵略者]    下一篇 [光榮歲月]

相關評論

同義詞:暫無同義詞