匯編語言程序格式之偽操作


匯編語言程序語句除指令以外還可以由偽操作和宏指令組成,它不像機器指令那樣是在程序運行期間由計算機來執行的,它是在匯編程序對源程序匯編期間由匯編程序處理的操作,它們可以完成如數據定義、分配存儲區、指示程序結束等功能。


  • 處理選擇偽操作

用來告訴匯編程序選擇哪一種指令系統

.8086 選擇 8086 指令系統
.286 選擇 80286 指令系統
.286P 選擇保護模式下的 80286 指令系統
.386 選擇 80386 指令系統
.386P 選擇保護模式下的 80386 指令系統
.486 選擇 80486 指令系統
.486P 選擇保護模式下的 80486 指令系統
.586 選擇 Pentium 指令系統
.586P 選擇保護模式下的 Pentium 指令系統

此類偽操作一般放在程序的最前面,若不給出,默認.8086


  • 段定義偽操作

匯編程序在把源程序轉換成目標程序時,必須確定標號和變量(代碼段和數據段的符號地址)的偏移地址,並且需要把有關信息通過目標模塊傳送給連接程序,以便連接程序把不同的段和模塊連接在一起,形成一個可以執行程序。

格式:
segment-name SEGMENT [定位類型] [組合類型] [使用類型] [‘類別’]
……
…… ; 語句序列
segment-name ENDS

(1)定位類型 align_type
    PARA    BYTE    WORD    DWORD    PAGE
(2)組合類型 combine_type
    PRIVATE    PUBLIC    COMMON    STACK    AT   exp
(3)使用類型 use_type
    USE16    USE32
(4) 類別 ‘class’


  • 程序開始和結束偽操作

格式:

​ 開始:NAME module_name / TITLE text

​ 結束:END [ label ]


  • 數據定義及存儲器分配偽操作

80x86提供了各種數據及存儲器分配偽指令,這些偽指令在匯編程序對源程序進行匯編期間,由匯編程序完成數據類型定義及存儲器分配等功能。

格式:

​ [變量] 助記符 操作數 [ , 操作數 , … ] [ ; 注釋]

助記符字段說明所用偽操作的助記符。 常用的有以下幾種:

DB(define byte):DB偽指令用來定義字節,對其后的每個數據都存儲在一個字節中。

DW(define word):DW偽指令用來定義字,對其后的每個數據分配2個字節(1個字)。

DD(define doubleword):DD偽指令用來定義雙字,對其后的每個數據分配4個字節(2個字)。用DD存入地址時,第一個字為偏移地址,第二個字為段地址。

DQ(define quadword):DQ偽指令用來定義4字,即64位字長的數據,DQ之后的每個數據占用8個字節(4個字)。

DT(define ten bytes):DT偽指令用來為壓縮的BCD數據分配存儲單元,它雖然可以分配10個字節(5個字),但最多只能輸入18個數字。


  • 表達式賦值偽操作

當程序中多次出現同一個表達式。可用賦值偽操作給表達式賦予一個名字。

格式:

​ 表達式名 EQU 表達式

如:DATA EQU 256 / DATA EQU [BP+8]


  • 地址計數器與對准偽操作

使用地址計數器保存當前正在匯編的指令的偏移地址。

格式:

​ ORG   $+8    ; 跳過8個字節的存儲區
​ JNE    $+6    ; 轉向地址是 JNE 的首址 +6
​ JMP    $+2    ; 轉向下一條指令

ORG偽操作用來設置當前計數器的值。格式: ORG constant expression

EVEN偽操作使下一個變量/指令開始於偶數字節。


  • 基數控制偽操作

匯編程序默認10進制數,為此。當使用其他基數表示的常數時,需要專門標記。

格式:

​ .RADIX expression

如:.RADIX 16



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM