Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PIC микроконтроллеры.docx
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
22 Мб
Скачать
☆

Глава 6. Требования языка ассемблер

Запись программ в машинных кодах неудобна, поэтому для ее записи используется язык ассемблера, который является более высоким уровнем кодирования. На нем программист пользуется символическими мнемокодами и описательными именами для полей данных и адресов памяти.

Программа, написанная символическими мнемокодами, которые используются в языке ассемблера, представляет собой исходный модуль. Для формирования исходного модуля применяют любой подходящий экранный редактор. Затем с помощью программы ассемблерного транслятора исходный текст транслируется в машинный код, известный как объектная программа. И наконец, PIC Simulator IDE определяет все адресные ссылки для объектной программы, генерируя загрузочный модуль.

КОМАНДЫ И ДИРЕКТИВЫ

В состав программы входят команды и директивы.

Команды – это операторы, которые указывает ассемблеру, какое действие они должны выполнить (например, пересылка MOV или сложение ADD). Обработка ассемблером команды приводит к генерации машинного кода.

Директивы – это операторы, которые управляет процессом ассемблирования и формирования листинга. Они действуют только в процессе ассемблирования программы и не генерируют машинных кодов. Функции этих псевдокоманд состоят в подготовке к исполнению программы и определении границы, за которую программа выйти не может (директивы ORG и END).

Директива ORG устанавливает адрес начала процедуры.

Пример

ORG 100H ; вектор/адрес начала программы

ORG 4H ; вектор/адрес подпрограммы прерываний

Директива EQU определяет имя, которое может принять ячейка памяти (регистр).

Пример

TЕMР EQU 0СН ; определение имени ячейки памяти (регистра)

Имя, в данном случае ТЕМР, может быть представлено любым допустимым в ассемблере именем. Теперь, в какой бы команде или директиве не использовалось слово TЕMР ассемблер подставит значение 0СН.

Имя, связанное с некоторым значением с помощью директивы EQU, может использоваться в командах

Пример

TЕMР EQU 0СН ; определение имени ячейки памяти (регистра)

MOVWF TЕMР ; пересылка содержимого W в TЕMР

Ассемблер заменяет имя TЕMР в команде MOVWF на значение 0СН, копируя содержимое регистра W в эту ячейку.

Директива END дает указание Ассемблеру на прекращение трансляции.

Операнд

Если команда специфицирует выполняемое действие, то операнд определяет

а) начальное значение данных;

б) элементы, над которыми выполняется действие по команде (регистры и их разряды).

Данные используются в арифметических и логических операциях и для обозначения aдресов памяти. Ассемблер преобразует все числовые значения данных в шестнадцатеричные. Ниже показаны различные числовые форматы данных.

Десятичный формат. Десятичный формат допускает десятичные цифры от 0 до 9 и обозначается буквой D (Dec), например D’125’. Букву можно не указывать, поставив точку перед константой, например, .125. Несмотря на то, что ассемблер позволяет кодирование в десятичном формате, он преобразует эти значения в Hex объектный код. Например, десятичное число .125 преобразуется в 7DH.

Шестнадцатеричный формат. Шестнадцатиричный формат допускает шестнадцатеричные цифры от 0 до F и обозначается буквой Н (Hех). Так как ассемблер полагает, что с буквы начинаются идентификаторы, то первой цифрой шестнадцатеричной константы должна быть цифра от 0 до 9. Например, Н’2E’, H’0FF’, которую ассемблер преобразует соответственно в 2E, FF.

Двоичный формат. Двоичный формат допускает двоичные цифры 0 и 1 и обозначается буквой В (Bin). Например, B’10110011’. Двоичный формат обычно используется для более четкого представления битовых значений в логических командах AND, OR и XOR. Десятичное .12, 0CH и B’1100’ все генерируют один и тот же код: 0CH или 0000 1100B в зависимости от того, как вы рассматривает содержимое байта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]