汇编语言常量
常量(constant)是程序中使用的一個確定數(shù)值,在匯編階段就可以確定,直接編碼于指令代碼中,不是保存在存儲器中可變的變量,因為是編碼在指令中的量,和指令一起存儲了,所以不用單獨開辟主存空間,所以也就沒法動態(tài)改變它了,這也正是高級語言常量無法修改的原因。
?
整數(shù)常量
整數(shù)常量(integer literal)(又稱為整型常量(integer constant))由一個可選前置符號、一個或多個數(shù)字,以及一個指明其基數(shù)的可選基數(shù)字符構成:
[{+|-}] digits [radix]
提示:本教程使用 Microsoft 語法符號。方括號內的元素是可選的;大括號內的元素用 | 符號分隔,且必須要選擇其中一個元素;斜體字標識的是有明確定義或說明的元素。
由此,比如 26 就是一個有效的整數(shù)常量。它沒有基數(shù),所以假設其是十進制形式。如果想要表示十六進制數(shù) 26,就將其寫為 26h。同樣,數(shù)字 1101 可以被看做是十進制值,除非在其末尾添加“b”,使其成為 1101b (二進制)。下表列出了可能的基數(shù)值:
| h | 十六進制 | r | 編碼實數(shù) |
| q/o | 八進制 | t | 十進制(備用) |
| d | 十進制 | y | 二進制(備用) |
| b | 二進制? | ? | ? |
下面這些整數(shù)常量聲明了各種基數(shù)。每行都有注釋:
26 ;十進制 26d ;十進制 11010011b ;二進制 42q ;八進制 42o ;八進制 1Ah ;十六進制 0A3h ;十六進制以字母開頭的十六進制數(shù)必須加個前置 0,以防匯編器將其解釋為標識符。
整型常量表達式
整型常量表達式 (constant integer expression) 是一種算術表達式,它包含了整數(shù)常量和算術運算符。每個表達式的計算結果必須是一個整數(shù),并可用 32 位 (從 0 到 FFFFFFFFh) 來存放。
下表列出了算術運算符,并按照從高 (1) 到低 (4) 的順序給出了它們的優(yōu)先級。對整型常量表達式而言很重要的是,要意識到它們只在匯編時計算。這里將它們簡稱為 整數(shù)表達式。
| () | 圓括號 | 1 |
| +,- | 一元加、減 | 2 |
| *, / | 乘、除 | 3 |
| MOD | 取模 | 3 |
| +, – | 加、減 | 4 |
運算符優(yōu)先級 (operator precedence) 是指,當一個表達式包含兩個或多個運算符時,這些操作的執(zhí)行順序。下面是一些表達式和它們的執(zhí)行順序:
4 + 5 * 2 ;乘法,加法 12 - 1 MOD 5 ;取模,減法 -5 + 2 ;一元減法,加法 (4 + 2) * 6 ;加法,乘法下面給出了一些有效表達式和它們的值:
| 16/5 | 3 |
| -(3+4) * (6-1 ) | -35 |
| -3+4*6- 1 | 20 |
| 25 mod 3 | 1 |
提示:在表達式中使用圓括號來表明操作順序,那么就不用去死記運算符優(yōu)先級。
實數(shù)常量
實數(shù)常量(real number literal)(又稱為浮點數(shù)常量(floating-point literal))用于表示十進制實數(shù)和編碼(十六進制)實數(shù)。十進制實數(shù)包含一個可選符號,其后跟隨一個整數(shù),一個十進制小數(shù)點,一個可選的表示小數(shù)部分的整數(shù),和一個可選的指數(shù):
[sign]integer.[integer] [exponent]
符號和指數(shù)的格式如下:
sign??????????????? {+,-}
exponent??????? E[{+,-}]integer
下面是一些有效的十進制實數(shù):
2.
+3.0
-44.2E+05
26.E5
至少需要一個數(shù)字和一個十進制小數(shù)點。
編碼實數(shù)(encoded real)表示的是十六進制實數(shù),用 IEEE 浮點數(shù)格式表示短實數(shù)。比如,十進制數(shù) +1.0 用二進制表示為:
0011 1111 1000 0000 0000 0000 0000 0000
在匯編語言中,同樣的值可以編碼為短實數(shù):
3F800000r
字符常量
字符常量 (character literal) 是指,用單引號或雙引號包含的一個字符。匯編器在內存中保存的是該字符二進制 ASCII 碼的數(shù)值。例如:
'A'
"d"
表明字符常量在內部保存為整數(shù),使用的是 ASCII 編碼序列。因此,當編寫字符常量“A”時,它在內存中存放的形式為數(shù)字 65 ( 或 41h)。
字符串常量
字符串常量 (string literal) 是用單引號或雙引號包含的一個字符 ( 含空格符 ) 序列:
'ABC'
'X'
"Good night, Gracie"
'40961
嵌套引號也是被允許的,使用方法如下例所示:
"This isn't a test"
'Say "Good night," Gracie'
和字符常量以整數(shù)形式存放一樣,字符串常量在內存中的保存形式為整數(shù)字節(jié)數(shù)值序列。例如,字符串常量“ABCD”就包含四個字節(jié) 41h、42h、43h、44h。
下一篇:1.11?字符在計算機中是如何表示的
1.12?匯編語言布爾表達式
處理器架構
2.1?CPU處理器架構
2.2?32位x86處理器架構
2.3?x86-64處理器架構
2.4?x86計算機組件
匯編語言基礎
3.1?第一個匯編語言程序
3.2?匯編語言常量
3.3?匯編語言保留字
3.4?匯編語言標識符
3.5?匯編語言偽指令
總結
- 上一篇: Cobar部署与测试
- 下一篇: 关于zabbix_get 的介绍