Главная  Микроконтроллеры 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [ 30 ] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

sbci r17, high(6>0) : Вычитаем старший байт

.ENDMACRO ; Конец определения макрокоманды

.SET - присвоить символьному обозначению выражение.

Директива SET присваивает символьному обозначению значение выражения. В дальнейшем это символьное обозначение может быть использовано в выражениях. Присвоенное значение - константа. В дальнейшем тексте программы это символьное выражение не может быть переопределено или изменено.

Синтаксис:

.EQU <символьное обозначение> = <выражение>

Пример:

. ЕОи io offset = 0x23 .EQU porta = io offset + 2

.CSEG ; Начало сегмента кода

clr г2 ; Очистить регистр г2

out porta,г2 ; Записать в порт А

.ESEG - EEPROM сегмент.

Директива ESEG определяет начало EEPROM сегмента. В исходном тексте программы может быть несколько EEPROM сегментов. Транслятор ассемблера в процессе компиляции программы объединяет все EEPROM сегменты в один. Директива BYTE не может быть использована в EEPROM сегменте. Директива ESEG не имеет никаких параметров. Сегмент EEPROM имеет свой счетчик байтов. Директива .ORG может быть использована для размещения кода или констант в определенном программистом месте памяти EEPROM.

Синтаксис:

.ESEG Пример:

.DSEG ; Начало сегмента данных

vartab:.BYTE 4 ; Резервируем 4 байта в SRAM

.ESEG

eevar:.DW 0xff67 ; Инициализируем одно слово в EEPROM

.CSEG ; Начало сегмента кода

const:.DW 2 ; Запишем число 0x0002 в память программ

nov rl.rO ; Что-нибудь сделаем



.EXIT - конец текста программы.

Директива EXIT указывает транслятору ассемблера, что следует завершить трансляцию программы. При отсутствии этой директивы транслятор ассемблера работает до тех пор, пока исходный файл не закончится (EOF). Если директив EXIT встречается в файле, включаемом в текст директивой INCLUDE, транслятор ассемблера продолжит работу со строки, следующей после соответствующей директивы INCLUDE.

Синтаксис: .EXIT

Пример:

.EXIT ; Завершить обработку этого файла

.INCLUDE - вставить файл.

Директива INCLUDE указывает транслятору ассемблера на необходимость вставить в исходный текст программы другой файл. Реально при обработке этой директивы транслируется файл, указанный в директиве INCLUDE, после завершения его обработки (при достижении конца файла или директивы .EXIT) продолжается обработка основного файла. Вложенные файлы, в свою очередь, могут иметь директиву INCLUDE. Для облегчения понимания можно представить себе, что в текст программы вместо директивы INCLUDE вставляется соответствующий файл.

Синтаксис:

.INCLUDE "имя файла"

Пример:

; Файл iodefs.asn

.ЕОи sreg=0x3f ; Регистр статуса

.EQU sphlgh=0x3e ; Старший байт сгека

.ЕОи splow=0x3d ; Младший байт стека

; Файл incdeno.asn .INCLUDE "jooefs.asiti" ; Включить в текст программы файл iodefs.asn in rO.sreg ; Прочитать содержимое регистра статуса



•LIST - включить генерацию листинга.

Директива LIST включает генерацию листинга. Ассемблер генерирует листинг, содержащий исходный текст на ассемблере, адреса и коды операций. По умолчанию генерация листинга включена. В комбинации с директивой NOLIST можно организовать печать только нужных фрагментов программы.

Синтаксис:

.LIST

Пример:

.NOLIST

.INCLUDE macro.inc" .INCLUDE "const.def .LIST

; Отключить генерацию листинга

; Включаемые файлы не будут

; показаны в листинге

; Включить генерацию листинга

.LISTMAC - включить раскрытие макрокоманд.

Директива LISTMAC указывает транслятору ассемблера на необходимость показа в листинге содержимого макрокоманд. По умолчанию в листинге показывается только название макрокоманды.

Синтаксис: . LISTMAC

Пример:

.MACRO МАСХ add гО,@0 еог г1,@1

.ENDMACRO

.LISTMAC

МАСХ г2.П

; Определить макрокоманду

; Конец определения макрокоманды

Вызов макрокоманды. В листинге будет показан ее текст

.MACRO - начало определения макрокоманды.

Директива MACRO указывает транслятору ассемблера на начало определения макрокоманды. Параметром директивы MACRO является имя определяемой макрокоманды. В дальнейшем при обнаружении в тексте программы имени макрокоманды транслятор ассемблера будет фактически заменять это имя на содержание макрокоманды. Макрокоманда может иметь до 10 параметров. Эти параметры



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [ 30 ] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93]

0.003