a51中得偽指令
本章講解彙編器的偽指令。說明如何定義符號和怎樣控制**和資料在程式儲存器中的位置。
簡介
ax51彙編器有一些偽指令,可以讓我們定義符號值,預留和初始化記憶體,以及控制**的位置。
不要把偽指令與指令相混淆。偽指令不產生可執行的**,除db,dw和dd之外,它們對**儲存器的內容沒有直接的影響。這些偽指令改變彙編器的狀態,定義使用者符號,以及新增資訊到目標檔案。
下表是對彙編器偽指令的乙個彙總。關於每條偽指令的詳細資訊,相應鏈結檢視。
偽指令格 式
說 明bit符號 bit 位位址
在位資料空間定義乙個位位址。
bsegbseg [at 絕對位址]
在位位址空間定義乙個絕對位址段。
code符號 code **位址
為**空間內的乙個指定位址分配乙個符號名。
csegcseg [at 絕對位址]
在**位址空間定義乙個絕對位址段。
data符號 data 資料位址
給乙個指定的片內資料位址分配乙個符號名。
db[標號:] db 表示式[, 表示式...]
定義一列位元組型數值。
dbit[標號:] dbit 表示式
在位單元中預留乙個空間。
dd[標號:] dd 表示式[, 表示式...]
定義一列雙字型數值。
ds[標號:] ds 表示式
在位元組空間預留空間。
dsb[標號:] dsb 表示式
在位元組空間預留空間。
dsd[標號:] dsd 表示式
在雙字空間預留空間。
dsegdseg [at 絕對位址]
在間接定址內部資料空間定義乙個絕對段。
dsw[標號:] dsw 表示式
在字空間預留空間;增加當前段的位置計數器。
dw[標號:] dw 表示式[, 表示式...]
定義一列字數值。
endend
指示程式的結束。
equequ 表示式
永久設定符號值。
__error____error__ 文字
產生一條標準的出錯資訊。羅畝按:前後均是兩條下劃線(_)。
eveneven
確保變數的字對齊。
extrnextrn 儲存空間型別 [:資料型別] (符號 [, ...])
定義在當前模組中引用的在其它模組中定義的符號。
externextern 儲存空間型別[:資料型別] (符號 [, ...])
idata符號 idata idata位址
為指定的間接定址的內部位址定義乙個符號名稱。
isegiseg [at 絕對位址]
在內部資料空間內定義乙個絕對段。
label名稱[:] label [資料型別]
在段中為乙個位址位置定義乙個符號名。
lit符號 lit '文字串'
為字串定義乙個符號名。
namename 模組名稱
為當前模組命名
orgorg 表示式
設定當前段的位置計數器
proc名稱 proc [資料型別]
定義乙個函式的開頭和結尾。
endp名稱 endp
publicpublic 符號 [, 符號...]
標明可以用於當前模組外部的符號。
rsegrseg 段名
選擇乙個可重定位的段。
segment段名 segment 儲存空間型別 [reloctype] [alloctype]
定義乙個可重定位的段。
setset 表示式
臨時設定符號值。
sfr,sfr 符號 = 位址;
定義乙個特殊功能暫存器(sfr)符號或者乙個sfr位符號。
sfr16sfr16 符號 = 位址;
sbitsbit 符號 = 位址;
usingusing 表示式
設定預定義的符號化暫存器位址,並為指令的暫存器堆預留空間。
xdata符號 xdata xdata位址
為指定的片外資料位址定義乙個符號名。
xsegxseg [at 絕對位址]
在外部資料位址空間定義乙個絕對段。
背景為綠色的偽指令和選項僅適用於ax51和a251。
羅畝按:原文中把end和equ行的背景也設為了綠色,我認為這可能是明顯的筆誤,因為這兩個偽指令在a51中使用得很好,所以此外沒有加綠色背景。如果哪位網友認為我的理解有誤,請斧正。
偽指令被分為如下幾大類:
ax51彙編器是乙個多次掃瞄彙編器。在第一次掃瞄時,符號值被確定。在接下來的掃瞄中,前向引用被解析,目標**生成。這種結構產生了對源程式的一種限制:定義符號值的表示式和控制位置計數器的表示式不可以有前向引用。
c51彙編偽指令
dbit指令在內部資料區的bit 段內以位為單位保留儲存器 rseg是段選擇指令,要想明白它的意思就要了解段的意思。段是程式 或資料物件的儲存單位。程式 放到 段,資料物件放到資料段。段分兩種,一是絕對段,一是再定位段。絕對段在組合語言中指定,在用l51聯接的時候,位址不會改變。用於如訪問乙個固定儲...
bootloader中的偽指令分析
偽指令 pseudo instruction 是用於告訴匯程式設計序如何進行彙編的指令。它既不控制機器的操作也不被彙編成機器 只能為匯程式設計序所識別並指導彙編如何進行。比如 ldr r0,0x48000000 由於0x48000000比較簡單,可以表示成立即數 每個立即數由乙個8位的常數迴圈右移偶...
A51 中段和RSEG用法
rseg是段選擇指令,要想明白它的意思就要了解段的意思。段是程式 或資料物件的儲存單位。程式 放到 段,資料物件放到資料段。段分兩種,一是絕對段,一是再定位段。絕對段在組合語言中指定,在用l51聯接的時候,位址不會改變。用於如訪問乙個固定儲存器的i o,或提供中斷向量的入口位址。而再定位段的位址是浮...