Описание некоторых директив ассемблера MPASM. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Описание некоторых директив ассемблера MPASM.



CODE – начало секции объектного кода

Синтаксис:

[<label>] code [ROM address>]

Используется при генерации объектных модулей. Объявляет начало секции программного кода. Если <label> не указана, секция будет названа code. Стартовый адрес устанавливается равным указанному значению или нулю, если адрес не был указан.

Пример:

RESET code H'01FF'

goto START

#DEFINE – определить метку замены текста

Синтаксис:

#define <name> [<string>]

Директива задает строку <string>, замещающую метку <name> всякий раз, когда та будет встречаться в исходном тексте.

Символы, которые определены директивой #DEFINE, не могут быть просмотрены симулятором. Используйте вместо этой директивы EQU.

Пример

#define length 20

#define control 0x19,7

#define position (X,Y,Z) (y-(2 * Z +X)).

test_label dw position(1, length, 512)

bsf control; установить в 1 бит 7 в f19

END – конец программного блока

Синтаксис:

end

Определяет конец программы. После остановки программы таблица символов сбрасывается в файл примера.

Пример:

start

;исполняемый код

;

end; конец программы

 

EQU – определить ассемблерную константу

Синтаксис:

<label> equ <expr>

Здесь <expr> – это правильное MPASM выражение. Значение выражения присваивается метке <label>.

Пример:

four equ 4; присваивает численное значение

           ; метке four

INCLUDE – включить дополнительный файл источника

Синтаксис:

include <<include_file>>

include "<include_file>"

Определяемый файл считывается как источник кода. По окончании включаемого файла будет продолжаться ассемблирование исходника. Допускается до шести уровней вложенности. <include_file> может быть заключен в кавычки или угловые скобки. Если указан полный путь к файлу, то поиск будет происходить только по этому пути. В противном случае порядок поиска следующий: текущий рабочий каталог, каталог, в котором находится исходник, каталог MPASM.

Пример:

include "c:\sys\sysdefs.inc"; system defs

include <addmain.asm>; register defs

 

LIST – установить параметры примера

Синтаксис:

list [<list_option>,, <list_option>]

Директива <list> разрешает вывод примера, если он до этого был запрещен. Кроме того, один из параметров примера может быть изменен для управления процессом ассемблирования в соответствии с таблицей 43.5.

 

Таблица 43.5 - Параметры, используемые директивой list

Параметр Значение по умолчанию Описание
C=nnn 80 Количество символов в строке
n=nnn 59 Количество строк на странице
t=ON|OFF OFF Укорачивать строки примера
p=<type> None Установить тип процессора: PIC16C54, PIC16C84, PIC16F84, PIC17C42 и др.
r=<radix> HEX Установить систему счисления по умолчанию: hex, dec, oct.
w=<level> 0 Установить уровень сообщений диагностики в файле примера: 0 – выводить все сообщения; 1 – выводить предупреждения и ошибки; 2 – выводить только ошибки.
x=ON|OFF OFF Включить или выключить макрорасширения.

 

NOLIST – выключить выход примера

Синтаксис:

NOLIST

 

ORG – установить начальный адрес программы

Синтаксис:

<label> org <expr>

Устанавливает начальный адрес программы для последующего кода в соответствии с адресом в <expr>. MPASM выводит перемещаемый объектный код, а MPLINK разместит код по определенному адресу. Если метка <label> определена, то ей будет присвоена величина <expr>. По умолчанию начальный адрес имеет нулевое значение. Директива может не использоваться, если создается объектный модуль.

Пример:

int_1 org 0x20; Переход по вектору 20

int_2 org int_1+0x10; Переход по вектору 30

 

PROCESSOR – установить тип процессора

Синтаксис:

processor <processor_type>

Устанавливает тип используемого процессора <processor_type>: [16C54 | 16C55 | 16C56 | 16C57 | 16C71 | 16C84 | 16F84 | 17C42]. Общие процессорные семейства могут быть выбраны как: [16C5X | 16CXX | 17CXX]

Для поддержания совместимости с новыми изделиями выбирается максимум доступной памяти.

 

SET – определить ассемблерную переменную

Синтаксис:

<label> set <expr>

Директива SET функционально эквивалентна директиве EQU, за исключением того, что величина, определяемая SET, может быть изменена директивой SET.

Пример:

area set 0

width set 0x12

length set 0x14

area set length * width

length set length + 1

 

TITLE – Определить программный заголовок

Синтаксис:

title "<title_text>"

Эта директива устанавливает текст, который используется в верхней линии страницы примера. <title_text> - это печатная ASCII последовательность, заключенная в двойные скобки. Она может быть до 60 символов длиной.

Пример

title "operational code, rev 5.0"

 

Компоновщик MPLINK

Абсолютный (неперемещаемый) код программы генерируется непосредственно при ассемблировании и располагается в программной памяти в порядке следования операторов программы. Операторы перехода на метку сразу же заменяются соответствующим кодом перехода на адрес метки.

При генерации перемещаемого кода каждая секция программного кода должна предваряться директивой CODE. Окончательное размещение программных кодов, расстановку физических адресов переходов выполняет компоновщик MPLINK.

Компоновщик MPLINK выполняет следующие задачи:

- распределяет коды и данные, т.е. определяет, в какой части программной памяти будут размещены коды и в какую область ОЗУ будут помещены переменные;

- распределяет адреса, т.е. присваивает ссылкам на внешние объекты в объектном файле конкретные физические адреса;

- генерирует исполняемый код, т.е. выдает файл в формате.hex, который может быть записан в память МК;

- отслеживает конфликты адресов, т.е. гарантирует, что программа или данные не будут размещаться в пространстве адресов, которое уже занято;

- предоставляет символьную информацию для отладки.

 

Менеджер библиотек MPLIB

Менеджер библиотек позволяет создавать и модифицировать файлы библиотек. Библиотечный файл является коллекцией объектных модулей, которые размещены в одном файле. MPLIB использует объектные модули с именем типа "filename.o" формата COFF (Common Object File Format).

Использование библиотечных файлов упрощает компоновку программы, делает ее более структурированной и облегчает ее модификацию.

 

Симулятор MPSIM

Симулятор MPSIM представляет собой симулятор событий, предназначенный для отладки программного обеспечения PIC-контроллеров. MPSIM моделирует все функции контроллера, включая все режимы сброса, функции таймера/счетчика, работу сторожевого таймера, режимы SLEEP и Power-down, работу портов ввода/вывода.

MPSIM запускается из командной строки DOS, конфигурируется пользователем и непосредственно применяет выходные данные ассемблера MPASM.

Перед использованием симулятора необходимо отассемблировать исходный файл <file_name>.asm и получить файл объектного кода в формате INHX8M, создаваемый MPASM по умолчанию:

MPASM <file_name>.asm <RETURN>

Чтобы запустить симулятор, необходимо набрать в командной строке

MPSIM<RETURN>.

Вид экрана, получаемого при запуске MPSIM, показан на рисунке 43.2. Экран разделен на три части, или окна. В верхнем окне показано текущее состояние моделирования, включая моделируемую программу, тип МК, число выполненных командных циклов и затраченное на них время. Среднее окно используется для вывода содержимого регистров пользователя. Набор регистров и формат выводимых на экран данных определяются файлом MPSIM.INI, который далее будет описан подробнее. Нижнее окно содержит приглашение на ввод команд, а также текущие операции и результат их выполнения.

При запуске симулятор MPSIM начинает искать командный файл MPSIM.INI. Этот текстовой файл создается пользователем и используется для задания всех задействованных в программе параметров.


Рисунок 43.2 - Вид рабочего окна симулятора MPSIM

Пример файла MPSIM.INI

Один из примеров файла MPSIM.INI приведен ниже.

; MPSIM file for user4

P84  ;использование МК семейства PIC16C84

SR X ;представление данных в шестнадцатиричном формате

ZR   ;сброс регистров МК в нуль

ZT   ;сброс таймера в нуль

RE  ;сброс времени выполнения команды и счетчика циклов

V W,X,2;вывод регистра W в hex формате на два знакоместа

AD F1,X,2;вывод на экран регистра TMR0 в hex формате на два знакоместа

AD F2,X,3;вывод на экран регистра PCL в hex формате на три знакоместа

AD F3,B,8;вывод на экран регистра STATUS в bin формате на восемь знакомест

AD IOA,X,2;вывод на экран регистра TRISA в hex формате на два знакоместа

AD F5,X,2;вывод на экран регистра порта A в hex формате на два знакоместа

SC 1 ;установка тактовой частоты 1 МГц

RS         ;сброс МК

LO user4

 

В представленном файле указаны: тип микроконтроллера, система счисления данных по умолчанию, регистры, содержимое которых выводится на экран, способ представления данных, рабочие параметры. Любая команда, которая исполняется MPSIM, может быть задана в файле MPSIM.INI, который определяет начальное состояние программы. При работе MPSIM создает файл MPSIM.JRN, в котором сохраняются все сведения о нажатии клавиш в процессе работы.

В файле MPSIM.INI допускается вводить комментарии, которые даются после знака ";", но не допускается использование пустых строк.

Основные команды, применяемые в симуляторе MPSIM, приведены в таблице 43.6. Когда эти команды вводятся в сеансе работы с MPSIM, они заносятся в файл MPSIM.JRN, который используется при создании расширенного файла MPSIM.INI. Данный файл можно задействовать для выявления ошибок и обеспечения нормального выполнения программы после исправления кода.

 

Таблица 43.6 - Основные команды симулятора MPSIM

 

Команда Параметр Комментарии
AB - Прерывание текущей сессии
AD Reg[, Radix[, Digits]] Вывод содержимого регистра на экран в указанном формате и заданной системе счисления X, B или D
B [addr] Установка точки останова по текущему или указанному адресу
C [#break] Продолжение выполнения программы с пропуском указанного количества следующих точек останова
DB - Вывод на экран всех активных точек останова
DI [addr1[,addr2]] Вывод на экран фрагмента памяти программ
DR - Вывод содержимого всех регистров
DW [E|D] Разрешение/запрещение функционирования сторожевого таймера
E [addr] Выполнение программы с текущего или указанного адреса
F Reg Вывод на экран содержимого регистра и возможность его редактирования пользователем
GE filename Получение и выполнение командного файла. Это способ загрузки командного файла.INI
GO - Запуск МК и начало выполнения программы
IP [time|step] Ввод входных воздействий в соответствии со значением параметра step в файле Stimulus
LO filename Загрузка в MPSIM файлов.HEX и.COD
M addr Вывод на экран содержимого памяти программ, начиная с адреса "addr" и возможность его редактирования. Ввод "Q" завершает команду.
P device Выбор типа моделируемого МК
Q - Выход из MPSIM и запись команд в файл.JRN
RE - Сброс времени выполнения и счетчика циклов
RS - Сброс моделируемого МК
SE pin|port Вывод на экран состояния указанного вывода или порта и возможность его изменения
SR O|X|D Установка системы счисления по умолчанию
SS [addr] Пошаговое исполнение, начиная с указанного адреса. При отсутствии адреса – исполнение идет с текущего места
ST filename Загрузка файла стимуляции
W   Отображение состояния регистра W с возможностью его модификации
ZM addr1,addr2 Очистка памяти программ с адреса addr1 по addr2
ZR - Сброс всех регистров МК
ZT - Сброс таймера/счетчика МК

 

 

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

 

В качестве примера ниже приведен файл для тестирования программы, выполняющей опрос состояния линии 1 порта A.

! test1.STI

STEP RA1

1 1!Установка на входе RA1 состояния "1"

 200 0!Поступление на вход RA1 сигнала "0"

1000 1!Переход сигнала на входе RA1 в "1"

1200 0!Повторная подача нулевого сигнала

Файл воздействия состоит из множества состояний, для которых задается параметр STEP, определяющий число циклов, в течение которых поддерживается указанное состояние. Он позволяет одновременно подавать сигналы на различные выводы МК. В файле воздействия можно указать любой вывод МК, в том числе и вывод сброса (_MCLR). Для обозначения комментариев используется знак!.

 

Контрольные вопросы:

1. Основные цели программы MPASM.

2. Как может быть вызван ассемблер MPASM?

3. Какие типы информации может содержать исходный ассемблерный код?

4. Какие форматы выражений используются в ассемблере MPASM?

5. Какие расширения файлов используются MPASM и утилитами?

6. Какие существуют типы директив в MPASM?

7. Какие задачи выполняет компоновщик MPLINK?

8. Что позволяет создавать менеджер библиотек MPLIB?

9. Какя роль симулятора MPSIM?

 

 



Поделиться:


Последнее изменение этой страницы: 2021-02-07; просмотров: 318; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.119.251 (0.043 с.)