目錄
彙編中的語句包括:指令語句,僞指令語句,宏語句。
- 指令語句:能夠產生目標代碼,實際執行。
- 僞操作語句:它不像機器指令那樣是在程序運行期間由計算機來執行的,不產生目標代碼,它是在彙編程序對源程序彙編期間由彙編程序處理的操作,它們可以完成如數據定義、分配存儲區、指示程序結束等功能。(提供控制信息)
- 宏指令語句:由編程者按照一定的規則來定義的一種較“宏大”的指令,可包括多條指令或僞指令 。(多條指令的組合)
指令語句格式:
- 格式:[name] operation operand [;comment]
- 解釋:
- 名字項(name):標號/變量。 名字中如果用到 . ,則必須是第一個字符。
- 標號:在代碼段中定義,後面跟着冒號:,它可以作爲過程名定義。 標號有3 種屬性:段、偏移及類型。
- 段屬性定義標號的段起始地址,此值必須在一個段寄存器中,而標號的段則總是在CS寄存器中。
- 偏移屬性,標號的偏移地址是從段起始地址到定義標號的位置之間的字節數。
- 類型屬性,用來指出該標號是在本段內引用還是在其他段中引用的。如是在段內引用的,則稱爲NEAR,否則爲FAR。
- 變量:在數據段或附加數據段中定義,後面不跟冒號。變量經常在操作數字段出現。它也有段、偏移及類型三種屬性。
- 段屬性:定義變量的段起始地址,此值必須在一個段寄存器中。
- 偏移屬性:變量的偏移地址是從段的起始地址到定義變量的位置之間的字節數。在當前段內給出變量的偏移值等於當前地址計數器($)的值。
- 類型屬性:變量的類型屬性定義該變量所保留的字節數。如 BYTE(1個字節長)、WORD(2個字節長)、DWORD(4個字節長) 。
- 標號:在代碼段中定義,後面跟着冒號:,它可以作爲過程名定義。 標號有3 種屬性:段、偏移及類型。
- 名字項(name):標號/變量。 名字中如果用到 . ,則必須是第一個字符。
僞操作格式:
- 格式:[Variable] Mnemonic Operand , … ,Operand [;Comments]
- 解釋:
- Variable(變量):它用符號地址表示,其作用與指令語句前的標號相同,但它的後面不跟冒號。如果語句中有變量,則表示第一個字節的偏移地址。(地址)
- 助記符(Mnemonic):說明所定義的數據類型。 DB 僞操作用來定義字節,其後的每個操作數都佔有一個字節。DW 僞操作用來定義字,其後的每個操作數佔有一個字(16位,其低位字節在第一個字節地址中,高位字節在第二個字節地址中)。DD 僞操作用來定義雙字,其後的每個操作數佔有兩個字(32位)。
- 例:
- 例: 字符串中每一個字符以ASCII碼處理,無法擴展,注意DB'AB'和DW'AB',在字符串中使用DW相當於把連續的兩個字符看成一個單詞,而不是像數字一樣,一個數字佔用兩個字節。因此對於一個Word,高位放高地址,地位放低地址。(越往下地址越大,8086結構)(對比上個例題)
- 例:操作數爲表達式
- 例:,通過使用'?',保留存儲空間,但不存入數據
- 通過使用DUP來複制操作數。 repeat-count DUP(operand, … ,operand),其中repeat-count可以是一個表達式,它的值應該是一個正整數,用來指定括號中的操作數的重複次數。
-
- 嵌套定義DUP:
-
可以用DW或DD僞操作存地址。 DW把變量或標號的偏移地址存入存儲器;DD把由16位段地址和16位偏移地址組成的整個地址存入存儲器。 用DD僞操作存入地址時,第1個字爲偏移地址,第2個字爲段地址。 (在8086中,段地址和偏移地址都是用16位表示,構成有效地址)