Основы микропроцессорной техники

Глава 6. Проектирование устройств на микроконтроллерах


«Структура курса | Глава 1 | Глава 2 | Глава 3 | Глава 4 | Глава 5 | Глава 6 | Раздел 7 | Глава 8 | Дополнения

Раздел 6 - Страницы: « 1 | 2 | 3 | 4 | 5 | 6 | 7 | »

Комментарии

Поле комментария может использоваться программистом для текстового или символьного пояснения логической организации программы. Поле комментария полностью игнорируется ассемблером, поэтому в нем можно применять любые символы. Комментарии, которые используются в строке сами по себе, должны начинаться с символа комментария (* или;) Комментарии в конце строки должны быть отделены от остатка строки одним или более пробелами или табуляцией.

Расширения файлов, которые используются MPASM и утилитами

Существует ряд расширений файлов, применяемых по умолчанию MPASM и связанными с ним утилитами. Назначение таких расширений приведены в табл. 6.4.

Табл. 6.4. Используемые по умолчанию назначения расширений файлов.
Расширение Назначение
. ASM Входной файл ассемблера для MPASM <source_name>. ASM
. OBJ Файл перемещаемого объектного кода <source_name>. OBJ
. LST Файл листинга, который генерируеться ассемблером MPASM или MPLINK: <source_name>. LST
. ERR Файл ошибок с MPASM: <source_name>. ERR
. MAP Файл распределения памяти с MPASM: <source_name>. MAP
. HEX Файл объектного кода в шиснадцятковому представлении с MPASM: <source_name. HEX
.HXL / .HXH Файл объектного кода в шиснадцятковому представлении p раздельным представлением младших и старших байтов: <source_name>. HXL, <source_name>. HXH
. LIB Библиотечный файл, созданный MPLIB и привязан компоновщиком MPLINK: <source_name>. LIB
. LNK Файл компоновщика: <source_name>. LNK
. COD Выходной символьный файл или файл видлагоджувальника. Формируются MPASM или MPLINK: <source_name>. COD

Листинг это текстовый файл в формате ASCII, содержащий машинные коды, сгенерированные соответственно каждой асемблернои команды, директивой ассемблера или действий выходного файла. Файл листинга содержит: имя продукта и версии, дату и время, номер страницы вверху каждой страницы.

В состав листинга входят также таблица символов и карта использования памяти. В таблице символов перечисляются все символы, которые есть в программе, и где они определены. Карта использования памяти дает графическую информацию о расходе памяти МК.

Директивы языка

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

Существует четыре основных типа директив в MPASM:

  • директивы данных;
  • директивы листинга;
  • управляющие директивы;
  • макро-директивы.

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

Директивы листинга руководят листингом файла 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> позволяет вывод листинга, если он до этого был запрещен. Кроме того, один из параметров листинга может быть изменен для управления процессом асемблювання соответствии с табл. 6.5.

Табл. 6.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 +0 x10; Переход по вектору 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
widthset 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"

«Структура курса Раздел 6 - Страницы: « 1 | 2 | 3 | 4 | 5 | 6 | 7 | »