- •С и с т е м а к о м а н д о д н о к р и с т а л ь н ы х м и к р о к о н т р о л л е р о в с е м е й с т в а m c s 5 1 у ч е б н о – м е т о д и ч е с к о е п о с о б и е
- •1. Способы адресации операндов
- •2. Система команд мк
- •Djnz r5,again ;
- •3. Правила написания программ на языке assembler
- •Метка операция операнд(ы) комментарии
- •3.1. Метка
- •3.2. Операция
- •3.3. Операнды
- •3.4. Комментарий
- •Директивы ассемблера
- •4.1. Директивы символических определений
- •Пример:
- •Ozu_org xdata 0800h; Адрес начала области внешнего озу.
- •4.2. Директивы резервирования и инициализации памяти
- •4.3. Директивы управления состоянием ассемблера
- •Задания для самостоятельной проработки материала
Ozu_org xdata 0800h; Адрес начала области внешнего озу.
OZU_END XDATA 0FFFH; Адрес конца области внешнего ОЗУ.
4.2. Директивы резервирования и инициализации памяти
Эти директивы используются для резервирования и инициализации слов, байтов или битов. В абсолютном сегменте зарезервированное пространство начинается с текущего адреса. В перемещаемом сегменте зарезервированное пространство начинается с текущего смещения. Указатель расположения поддерживается отдельно для каждого сегмента, к нему можно обращаться, используя символ ($).
DB Заносит в память программ байтовую константу.
Директива имеет следующий формат: label: DB expression , expression …,
где label: - метка, адрес инициализированной памяти, expression - значение байта, которое может быть символом, символьной строкой или выражением.
Директива DB может быть определена только внутри сегмента кода. Если директива используется в другом сегменте, ассемблер генерирует сообщение об ошибке.
Пример: TABLE: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH
DBIT Резервирует пространство в битовом сегменте (20Н – 2FH).
Директива имеет следующий формат: Метка: DBIT выражение.
Здесь метка указывает адрес зарезервированной памяти, а выражение - число зарезервированных битов.
Пример:
ON_FLAG: DBIT 1 ;резервируется 1 бит.
OFF_FLAG: DBIT 1
DS Резервирует пространство памяти в текущем сегменте.
Директива имеет следующий формат: label: DS expression,
где label: - метка, присвоенная адресу зарезервированной памяти, expression - количество зарезервированных байтов.
Директива резервирует пространство в текущем сегменте по текущему адресу. Затем текущий адрес увеличивается на значение выражения. Сумма счётчика адреса и значения выражения не может превышать границу текущего адресного пространства.
Пример:TIME: DS 8
DW Инициализирует память значением слова.
Директива DW инициализирует память программ 16-разрядными значениями слова. Директива имеет следующий формат:
label: DW expression , expression …,
где label: - метка, присвоенная адресу зарезервированной памяти, expression - выражения - данные, которые могут содержать символ, символьную строку или выражение.
Директива может быть определена только внутри сегмента кода. Если директива используется в другом сегменте, ассемблер генерирует сообщение об ошибке.
Пример: TABLE: DW 3F06H, 5B4FH, 666DH, 7D07H,7F6FH
4.3. Директивы управления состоянием ассемблера
Эти директивы используются для того, чтобы сообщить о конце трансляции программы, выбрать начальный адрес или смещение для сегмента, определить используемый банк регистров.
END Сообщает о конце транслируемого модуля.
Директива END сообщает о конце ассемблерного модуля. Любой текст в ассемблерном файле, который появляется после этой директивы, игнорируется. Директива требуется в каждом исходном ассемблерном файле. Если директива отсутствует, ассемблер генерирует сообщение о фатальной ошибке.
Пример: ORG 0100H
.
END
ORG Изменяет значение ассемблерного счётчика адреса текущего сегмента программы.
Директива ORG ( начало) имеет следующий формат: ORG выражение.
Значением выражения является допустимый шестнадцатиразрядный адрес, определяющий ячейку, в которую будет загружаться первый байт прикладной программы или байт данных. Если в самом начале программы директива отсутствует, то по умолчанию программа начинается с адреса 0000Н. В программе может быть несколько директив ORG.
Пример: ORG 0000H ; Стартовый адрес прикладной программы
JMP START ;
ORG 000BH ; Адрес - вектор прерывания при переполнении JMP INT_TIMER0 ; таймера счетчика 0.
USING Выбирает номер банка регистров общего назначения.
Формат директивы: USING expression,
где expression - № банка регистров.
Пример: USING 1 ; Использование первого банка регистров.