A51中的僞指令

轉自:http://blog.sina.com.cn/s/blog_436479630100e4bn.html,原作者:那不是我

A51中得僞指令

本章講解彙編器的僞指令。說明如何定義符號和怎樣控制代碼和數據在程序存儲器中的位置。

    簡介

 

    Ax51彙編器有一些僞指令,可以讓我們定義符號值,預留和初始化內存,以及控制代碼的位置。

     不要把僞指令與指令相混淆。僞指令不產生可執行的代碼,除DB,DW和DD之外,它們對代碼存儲器的內容沒有直接的影響。這些僞指令改變彙編器的狀態,定義用戶符號,以及添加信息到目標文件。

     下表是對彙編器僞指令的一個彙總。關於每條僞指令的詳細信息,請點擊相應鏈接查看。

僞指令 格 式 說 明
BIT 符號 BIT 位地址 在位數據空間定義一個位地址。
BSEG BSEG [AT 絕對地址] 在位地址空間定義一個絕對地址段。
CODE 符號 CODE 代碼地址 爲代碼空間內的一個指定地址分配一個符號名。
CSEG CSEG [AT 絕對地址] 在代碼地址空間定義一個絕對地址段。
DATA 符號 DATA 數據地址 給一個指定的片內數據地址分配一個符號名。
DB [標號:] DB 表達式[, 表達式...] 定義一列字節型數值。
DBIT [標號:] DBIT 表達式 在位單元中預留一個空間。
DD [標號:] DD 表達式[, 表達式...] 定義一列雙字型數值。
DS [標號:] DS 表達式 在字節空間預留空間。
DSB [標號:] DSB 表達式 在字節空間預留空間。
DSD [標號:] DSD 表達式 在雙字空間預留空間。
DSEG DSEG [AT 絕對地址] 在間接尋址內部數據空間定義一個絕對段。
DSW [標號:] DSW 表達式 在字空間預留空間;增加當前段的位置計數器。
DW [標號:] DW 表達式[, 表達式...] 定義一列字數值。
END END 指示程序的結束。
EQU EQU 表達式 永久設置符號值。
__ERROR__ __ERROR__ 文本 產生一條標準的出錯信息。羅畝按:前後均是兩條下劃線(_)。
EVEN EVEN 確保變量的字對齊。
EXTRN EXTRN 存儲空間類型 [:數據類型] (符號 [, ...]) 定義在當前模塊中引用的在其它模塊中定義的符號。
EXTERN EXTERN 存儲空間類型[:數據類型] (符號 [, ...])
IDATA 符號 IDATA idata地址 爲指定的間接尋址的內部地址定義一個符號名稱。
ISEG ISEG [AT 絕對地址] 在內部數據空間內定義一個絕對段。
LABEL 名稱[:] LABEL [數據類型] 在段中爲一個地址位置定義一個符號名。
LIT 符號 LIT '文字串' 爲字符串定義一個符號名。
NAME NAME 模塊名稱 爲當前模塊命名
ORG ORG 表達式 設置當前段的位置計數器
PROC 名稱 PROC [數據類型] 定義一個函數的開頭和結尾。
ENDP 名稱 ENDP
PUBLIC PUBLIC 符號 [, 符號...] 標明可以用於當前模塊外部的符號。
RSEG RSEG 段名 選擇一個可重定位的段。
SEGMENT 段名 SEGMENT 存儲空間類型 [reloctype] [alloctype] 定義一個可重定位的段。
SET SET 表達式 臨時設置符號值。
sfr, sfr 符號 = 地址; 定義一個特殊功能寄存器(SFR)符號或者一個SFR位符號。
sfr16 sfr16 符號 = 地址;
sbit sbit 符號 = 地址;
USING USING 表達式 設置預定義的符號化寄存器地址,併爲指令的寄存器堆預留空間。
XDATA 符號 XDATA xdata地址 爲指定的片外數據地址定義一個符號名。
XSEG XSEG [AT 絕對地址] 在外部數據地址空間定義一個絕對段。

     背景爲綠色的僞指令和選項僅適用於AX51A251

     羅畝按:原文中把END和EQU行的背景也設爲了綠色,我認爲這可能是明顯的筆誤,因爲這兩個僞指令在A51中使用得很好,所以此外沒有加綠色背景。如果哪位網友認爲我的理解有誤,請斧正。

     僞指令被分爲如下幾大類:

  • 段控制
    通用段:SEGMENT,RSEG
    絕對段:CSEG,DSEG,BSEG,ISEG,XSEG
  • 符號定義
    通用符號:EQU,SET
    地址符號:BIT,CODE,DATA,IDATA,XDATA
    SFR符號:sfr,sfr16,sbit
    文本替代:LIT
  • 存儲空間初始化
    DB,DW,DD
  • 存儲空間預留
    DBIT,DS,DSB,DSB,DSW,DSD
  • 程序說明
    PROC/ENDP,LABEL
  • 程序連接
    PUBLIC,EXTRN/EXTERN,NAME
  • 地址控制
    ORG,EVEN,USING
  • 其它
    END,__ERROR__

    Ax51彙編器是一個多次掃描彙編器。在第一次掃描時,符號值被確定。在接下來的掃描中,前向引用被解析,目標代碼生成。這種結構產生了對源程序的一種限制:定義符號值的表達式和控制位置計數器的表達式不可以有前向引用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章