先來個簡單範例
main PROC
move eax, 5 ;將5移到eax暫存器
add eax, 6 ;將6加到eax暫存器
call WriteInt ;顯示eax的值
exit ;結束
main ENDP
說明:為了讓程式簡化,呼叫函式庫WriteInt的副程式。
整數
[+|-]數字[基底]基底內容:
h | 十六進位。 |
q/o | 八進位。 |
d | 十進位。 |
b | 二進位。 |
r | 實數。 |
t | 十進位(另一種)。 |
y | 二進位(另一種)。 |
實數
實數可分成兩種表示方式。1. [符號] 整數.整數[指數]
2. 編碼實數:編碼實數是以十六進位表示實數,使用的是32位元精準的
的IEEE浮點數格式
字元
字元是以單引號或雙引號圍住單一字元。字串
字串是由多個字元所組成。保留字
1.指令助憶符號:例如 MOV、ADD......。2.指引(directive):告知如何組譯程式。
3.屬性:用於提供變數與運算元有關大小與使用的資訊。例如 BYTE、WORD。
4.運算子:用於運算式。
5.預先定義符號:例如 @data,這些符號會在組譯時,回傳整數值。
識別符
1. 字元長度1~247個。2. 不區分大小寫。
3. 第一個字元必須是英文字母、底線、@、?、$。
4. 識別符不能與保留字相同。
注意: 1. 在執行組譯器時,可使用-Cp命令,讓保留字與識別符有區分大小寫。
2. 組合語言時常使用@符號,用來定義預先符號的字首,因該避免在識別
符中使用
指引
指引是嵌入在程式原始碼中的命令,並且此命令是由組譯器來辨識,然後執行指定動作。指引不會在執行時被執行,相反地,指令會在執行時被執行。指引
能定義變數、巨集、程序。它們能指定名稱給記憶體區段,並且執行許多與組
譯器有關的內部管理工作。指引不區分大小寫。
定義區段:組譯器的指引有一個重要的功能就是定義程式區段。
.DATA指引,標記程式中含有變數的區域。
.CODE指引,標記程式中含有指令的區域。
.STACK指引, 標記程式執行時,保存的堆疊的區域,並且設定其大小。
指令
指令是組合語言程式經過組譯以後,可以執行的敘述。指令會由組譯器轉譯成機器語言位元組。在執行時,CPU將載入指令,並且執行。指令的四個基
本部分。
1. 標籤(非必要) 。
2. 指令助憶符號(必要)。
3.運算元(通常需要)。
4. 註解(非必要)。
基本語法: [標籤:]助憶符號[;註解]
標籤,用於標記指令或資料的位置。
資料標籤,用於標記變數的位置。
程式碼標籤,在程式的程式碼區域中的標籤。
指令助憶符號
mov 將值做搬移
add 將值相加
sub 將值相減
mul 將值相乘
jmp 跳耀到指定位置
call 呼叫程序
運算元
運算元可以是暫存器、記憶體運算元、運算式、I/O埠。無作業指令(NOP)
最安全的指令,因該是NOP指令。此指令花費一位元組記憶體空間,而且它不會指示CPU做任何事情。有時組譯器與編譯器會利用它,將
程式碼對齊成偶數位址邊界。
沒有留言:
張貼留言