偽指令不屬于單片機(jī)的指令系統(tǒng),而是由匯編器提供的指令,用于調(diào)整存儲器中程序的位置、定義宏、初始化存儲器等。AVR單片機(jī)的匯編器共提供18條偽指令(見附表)。
其中,ORG、DB、DW、EQU讀者比較熟悉,這里不再贅述。下面對部分偽指令加以說明。
BYTE-保存單字節(jié)數(shù)據(jù)到SRAM中。BYTE偽指令僅用在數(shù)據(jù)存儲器。為提供數(shù)據(jù)保存的位置,在BYTE前應(yīng)有標(biāo)號。在由CSEG、ESEG定義的代碼段和E2PROM段中不能使用BYTE偽指令。
格式LABEL:.BYTE表達(dá)式
CSEG-定義程序存儲器代碼段的起始位置一個匯編文件可以包括若干個代碼段,匯編時這些代碼段被連成一個代碼段。在代碼段中不能使用BYTE偽指令。
格式.CSEG
DSEG-定義數(shù)據(jù)段的起始位置一個匯編文件,可以包括若干個數(shù)據(jù)段,匯編時這些數(shù)據(jù)段被連成一個數(shù)據(jù)段。數(shù)據(jù)段等由BYTE偽指令組成。
格式.DSEG
ESEG-定義E2PROM段的起始位置一個匯編文件可以包括若干個E2PROM段,匯編時這些EEPROM段被連成一個EEPROM段。在EEPROM段中不能使用BYTE偽指令。
格式.ESE
GDEF-為寄存器設(shè)置符號名DEF偽指令允許周符號代替寄存器。一個寄存器可以賦多個符號。
格式.DEF符號=寄存器
DEVICE-定義使用的器件DEVICE定義程序所使用的器件,若程序中有指定器件不支持的指令,或程序段、E2PROM段超出指定器件的容量,匯編器將給出提示。若不用DEVICE偽指令,則默認(rèn)器件支持所有指令,也不限制存儲器容量。
格式.DEVICEAT90S1200|AT90S2313|AT90S4414|AT90S8515
AVR單片機(jī)的器件不同,指令的條數(shù)不同。
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告訴匯編器從指定的文件開。始讀,然后匯編該文件,直至文件結(jié)束或遇到EXIT偽指令。
格式 INCLUDE“文件名”
EXIT-匯編結(jié)束若EXIT出現(xiàn)在包括文件中,則從文件中INCLUDE偽指令行繼續(xù)執(zhí)行。