匯編器提供一些偽指令偽指令并不直接轉換成操作數而是用于調整存儲器中程序的位置
定義宏初始化存儲器等全部偽指令在表4.2 中給出
1 BYTE 保存字節到變量
BYTE 偽指令保存存儲的內容到SRAM 中為了能提供所要保存的位置BYTE 偽指令前應有
標號該偽指令帶一個表征被保存字節數的參數該偽指令僅用在數據段內見偽指令CSEG DSEG
和ESEG 注意必須帶一個參數字節數的位置不需要初始化
語法LABEL BYTE 表達式
2 CSEG 一代碼段
CSEG 偽指令定義代碼段的開始位置一個匯編文件包含幾個代碼段這些代碼段在匯 編時
被連接成一個代碼段在代碼段中不能使用BYTE 偽指令典型的缺省段為代碼段代碼段有一個
字定位計數器ORG 偽指令用于放置代碼段和放置程序存儲器指定位置的常數
CSEG 偽指令不帶參數
語法CSEG
表4.2 偽指令表
序號 偽指令 說 明 序號 偽指令 說 明
1 BYTE 保存字節到變量 10 ESEG E2PROM 段
2 CSEG 代碼段 11 EXIT 退出文件
3 DB 定義字節常數 12 INCLUDE 從指定文件開始讀
4 DEF 設置寄存器的符號名 13 LIST 打開列表文件
5 DEVICE 定義被匯編的器件 14 LISTMAC 打開宏表達式
6 DSEG 數據段 15 MACRO 宏開始
7 DW 定義字常數 16 NOLIST 關閉列表文件
8 ENDMACRO 宏結束 17 ORG 設置程序起始位置
9 EQU 符號相等于表達式 18 SET 賦值給一個標號
3 DB 在程序存儲器或E2PROM 存儲器中定義字節常數
DB 偽指令保存數據到程序存儲器或E2PROM 存儲器中為了提供被保存的位置在DB 偽指令
前必須有標號DB 偽指令可帶一個表達式表至少有一個表達式DB 偽指令必須放在代碼段或
E2PROM 段表達式表是一系列表達式用逗號分隔每個表達式必須是一128 255 之間的有效值
如果表達式有效值是負數則用8 位2 的補碼放在程序存儲器或E2PROM 存儲器中如果DB 偽指
令用在代碼段并且表達式表多于一個表達式則以兩個字節組合成一個字放在程序存儲器中
如果表達式表是奇數那么最后一個表達式將獨自以字格式放在程序存儲器中而不管下一行匯
編代碼是否是單個DB 偽指令
語法LABEL DB 表達式
4 DEF 設置寄存器的符號名
DEF 偽指令允許寄存器用符號代替一個定義的符號用在程序中并指定一個寄存器,一個寄
存器可以賦幾個符號符號在后面程序中能再定義
語法DEF 符號一寄存器
5 DEVICE 定義被匯編的器件
DEVICE 偽指令允許用戶告知匯編器被執行的代碼使用那種器件如果使用該偽指令若在代
碼中有指定的器件不提供的指令則提示一個警告如果代碼段或E2PROM 段的尺寸大于被指定器
件的尺寸也提示警告如果不使用DEVICE 偽指令則假定器件提供所有的指令也不限制存儲
器尺寸
語法 .DEVICE AT90S1200 AT90S2313 AT90S4414 AT9OS8515
6 DSEG 一數據段
DSEG 偽指令定義數據段的開始一個匯編文件能包含幾個數據段這些數據段在匯編時
被連接成一個數據段一個數據段正常僅由BYTE 偽指令和標號組成數據段有自己的定
位字節計數器ORG 偽指令被用于在SRAM 指定位置放置變量DSEG 偽指令不帶參數
語法 .DSEG
7 DW——在程序存儲器和E2PROM 存儲器中定義字常數
DW 偽指令保存代碼到程序存儲器或E2PROM 存儲器為了提供被保存的位置在DW 偽指
令前必須有標號DW 偽指令可帶一個表達式表至少有一個表達式DW 偽指令必須放在
代碼段或E2PROM 段表達式表是一系列表達式用逗號分隔每個表達式必須是一32 768
65 535 之間的有效值如果表達式有效值是負數則用 16 位2 的補碼放在程序存儲器中
語法LABEL .DW 表達式表
8·ENDMACRO 一宏結束
ENDMACRO 偽指令定義宏定義的結束該偽指令并不帶參數參見MACRO 宏定義偽指令
語法 .ENDMACRO
9 EQU——設置一個符號相等于一個表達式
EQU 偽指令賦一個值到標號該標號用于后面的表達式用EQU 偽指令賦值的標號是一個
常數不能改變或重定義
語法 .EQU 標號= 表達式
10 ESEG - E2PROM 段
ESEG 偽指令定義E2PROM 段的開始位置一個匯編文件包含幾個E2PROM 段這些E2PROM
段在匯編時被連接成一個E2PROM 段在E2PROM 段中不能使用BYTE 偽指令E2PROM 段有一
個字節定位計數器ORG 偽指令用于放置E2PROM 存儲器指定位置的常數ESEG 偽指令不帶參數
語法 .ESEG
11 EXIT——退出文件
EXIT 偽指令告訴匯編器停止匯編該文件正常情況下匯編器匯編到文件的結束如果
EXIT 出現在包括文件中則匯編器從文件中INCLUDE 偽指令行繼續匯編
語法 .EXIT
12·INCLUDE——包括另外的文件
INCLUDE 偽指令告訴匯編器從指定的文件開始讀然后匯編器匯編指定的文件直到文件
結束或遇到EXIT 偽指令一個包括文件也可能自己用INCLUDE 偽指令來表示
語法 .INCLUDE“文件名”
13 LIST——打開列表文件生成器
LIST 偽指令告訴匯編器打開列表文件生成器匯編器生成一個匯編源代碼地址和操作
代碼的文件列表列表文件生成器缺省值是打開該偽指令總是與NOLIST 偽指令一起出現
用于生成列表或匯編源文件有選擇的列表
語法 .LIST
14 LISTMAC——打開宏表達式
LISTMAC 偽指令告訴匯編器當調用宏時用列表生成器在列表文件中顯示宏表達式
缺省值僅是在列表文件中顯示宏調用參數
語法 .LISTMAC
15 MACRCO 一宏開始
MACRO 偽指令告訴匯編器這是宏開始MACRO 偽指令帶宏名和參數當后面的程序中寫
了宏名被表達的宏程序在指定位置被調用一個宏可帶10 個參數這些參數在宏定義中
用0 9 代表當調用一個宏時參數用逗號分隔宏定義用ENDMACRO 偽指令結束
缺省值為匯編器的列表生成器僅列表宏調用為了在列表文件中包括宏表達式必須使
用 LISTMAC 偽指令在列表文件的操作代碼域內宏用 a+ 作記號
語法 .MACRO 宏名
16 NOLIST--關閉列表文件生成器
NOLIST 偽指令告訴匯編器關閉列表文件生成器正常情況下匯編器生成一個匯編源
代碼地址和操作代碼文件列表缺省時為打開列表文件但是可用該偽指令禁止列表為
了使被選擇的匯編源文件部分產生列表文件該偽指令可以與LIST 偽指令一起使用
語法 .NOLIST
17 ORG 一設置程序起始位置
ORG 偽指令設置定位計數器一個絕對值設置的值為一個參數如果ORG 偽指令放在數
據段則設置SRAM 定位計數器如果該偽指令放在代碼段則設置程序存儲器計數器如
果該偽指令放在E2PROM 段則設置E2PROM 定位計數器如果該偽指令前帶標號在相同
的源代碼行則標號由參數值給出代碼和E2PROM 定位計數器的缺省值是零而當匯編啟
動時 SRAM 定位計數器的缺省值是32 因為寄存器占有地址為 0 31 注意E2PROM 和
SRAM 定位計數器按字節計數而程序存儲器定位計數器按字計數
語法 .ORG 表達式
18 SET 設置一個與表達式相等的符號
SET 偽指令賦值給一個標號這個標號能用在后面的表達式中用SET 偽指令賦值的
標號在后面的程序中能改變
語法 .SET 標號 = 表達式
4 ·1 3 表達式
匯編器包括一些表達式表達式由操作數運算符和函數組成所有的表達式內部為32
位
一操作數
1 用戶定義的標號該標號給出了放置標號位置的定位計數器的值
2 用戶用SET 偽指令定義的變量
3 用戶用EQU 偽指令定義的常數
4 整數常數包括下列幾種形式
·十進制缺省值 10 255
·十六進制數二進制表示法0x0a,$0a,0xff.$ff
二進制數0b0O00101O,0bllllllll
5 PC 程序存儲器定位計數器的當前值
二 函 數
1 LOW 表達式返回一個表達式的低字節
2 HIGH 表達式返回一個表達式的第二個字節
3 BYTE2 表達式與HIGH 函數相同
4 BYTE3 表達式返回一個表達式的第三個字節
5 BYTE4 表達式返回一個表達式的第四個字節
6 LWRD 表達式返回一個表達式的 0 15 位
(7) HWRD 表達式返回一個表達式的 16 31 位
8 PAGE 表達式返回一個表達式的 16 21 位
9 EXP2 表達式返回2 表達式
10 LOG2 表達式返回LOG2 表達式的整數部分
|