偽指令不屬于單片機的指令系統,而是由匯編器提供的指令,用于調整存儲器中程序的位置、定義宏、初始化存儲器等。AVR單片機的匯編器共提供18條偽指令(見附表)。
其中,ORG、DB、DW、EQU讀者比較熟悉,這里不再贅述。下面對部分偽指令加以說明。
BYTE-保存單字節數據到SRAM中。BYTE偽指令僅用在數據存儲器。為提供數據保存的位置,在BYTE前應有標號。在由CSEG、ESEG定義的代碼段和E2PROM段中不能使用BYTE偽指令。
格式LABEL:.BYTE表達式
CSEG-定義程序存儲器代碼段的起始位置一個匯編文件可以包括若干個代碼段,匯編時這些代碼段被連成一個代碼段。在代碼段中不能使用BYTE偽指令。
格式.CSEG
DSEG-定義數據段的起始位置一個匯編文件,可以包括若干個數據段,匯編時這些數據段被連成一個數據段。數據段等由BYTE偽指令組成。
格式.DSEG
ESEG-定義E2PROM段的起始位置一個匯編文件可以包括若干個E2PROM段,匯編時這些EEPROM段被連成一個EEPROM段。在EEPROM段中不能使用BYTE偽指令。
格式.ESE
GDEF-為寄存器設置符號名DEF偽指令允許周符號代替寄存器。一個寄存器可以賦多個符號。
格式.DEF符號=寄存器
DEVICE-定義使用的器件DEVICE定義程序所使用的器件,若程序中有指定器件不支持的指令,或程序段、E2PROM段超出指定器件的容量,匯編器將給出提示。若不用DEVICE偽指令,則默認器件支持所有指令,也不限制存儲器容量。
格式.DEVICEAT90S1200|AT90S2313|AT90S4414|AT90S8515
AVR單片機的器件不同,指令的條數不同。
AT90S1200有89條最基本指令;Attinyll/12/15/22有90條指令:AT90S2313/2323/2343/2333/4414/4433/4434/8515/90S8534/8535有118條指令;ATmega603/103有121條指令;ATmega161有130條指令。因此在源程序中必須先用偽指令“DEVICE”定義使用的器件名。
INCLUDE-包括另外的文件INCLUDE告訴匯編器從指定的文件開。始讀,然后匯編該文件,直至文件結束或遇到EXIT偽指令。
格式 INCLUDE“文件名”
EXIT-匯編結束若EXIT出現在包括文件中,則從文件中INCLUDE偽指令行繼續執行。
-
單片機
+關注
關注
6067文章
44961瀏覽量
648865 -
AVR
+關注
關注
11文章
1125瀏覽量
79794 -
匯編器
+關注
關注
0文章
31瀏覽量
11435
原文標題:AVR單片機匯編器偽指令
文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論