Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовой проект / КР1816ВЕ48..doc
Скачиваний:
135
Добавлен:
21.02.2014
Размер:
229.38 Кб
Скачать

12. Программные средства.

В состав программного обеспечения комплекса входят следующие программы:

  • транслятор с языка ASM-48;

  • имитатор микроконтроллера;

  • драйвер программатора.

Транслятор преобразует файл, написанный на языке ASM-48 в объектный файл, содержащий уже непосредственно коды микроконтроллера. При этом транслятор предоставляет такие возможности, как:

  • автоматическая расстановка адресов строк, возможность задания текстовых меток (для команд типа JMP);

  • возможность использования макроопределений;

  • выявление синтаксических ошибок,

  • использование комментариев.

Объектный файл загружается в имитатор, который позволяет всячески исследовать тестируемую программу с разных сторон, и при необходимости вносить в неё изменения. Основные достоинства имитатора:

  • возможность запуска программ без использования микроконтроллера на обычном ПК;

  • хорошая скорость выполнения команд МК;

  • использование стандартных средств отладки программ: пооператорное выполнение, точки останова, просмотр всех внутренних регистров микроконтроллера и возможность их корректировки — всё это практически невозможно сделать на самом микроконтроллере;

  • возможность деассемблирования как объектных файлов, так и данных, загруженных из какого-либо ПЗУ;

Существенным недостатком имитатора является то, что он неспособен имитировать сложные внешние устройства (например матричные индикаторы, внешние порты-расширители и т.д.). Для проверки работы микроконтроллера с внешним оборудованием необходимо загружать программу в ОЗУ программатора и работать с реальными внешними устройствами. Ещё один недостаток имитатора заключается в том, что в нем программы работают всё же медленнее, чем в микроконтроллере. Так, на ПК с процессором 133 МГц имитатор выполняет всего лишь 500 команд в секунду, тогда как даже у самого медленного МК48 (тактовая частота 6МГц) эта цифра составляет 400.000 опер/сек.

13. Транслятор с языка asm-48.

Пример исходного текста программы дан в приложении.

Задача транслятора – преобразование исходного текста программы (*.ASM), написанного на языке ASM-48 в объектный модуль (*.OBJ).

Исходный файл набирается в отдельном текстовом редакторе. Лучше всего использовать встроенный редактор в DOS-Навигаторе (это DOS-оболочка). Так как транслятор запускается из командной строки, и весь вывод на экран осуществляется в терминальном режиме, то возможно использовать непосредственный запуск транслятора из текстового редактора. Примером такого редактора служит Multi-Edit. В процессе работы транслятора создаётся LOG-файл.

Файл исходного текста – обычный текстовый файл. Его структура:

<Номер строки> [Команда] <;Комментарий>

Номер строки – это адрес её байта в памяти будущей программы. Если номер строки не задан, то транслятор ставит его автоматически. Программатор может работать только с адресами, не превышающими 2047.

Команда – это любая команда из языка ASM-48. Транслятор поддерживает все команды. Их список дан в приложении.

После команды может находиться комментарий. Он должен начинаться с символа “;”. Весь текст после этого символа и до конца строки транслятором полностью игнорируется.

В поле команды можно использовать текстовые метки, например:

JMP Начало_Прогр.;

MOV A,#Значение;

Метки бывают двух типов: константы и метки плавающего адреса. Первые определяются в начале файла:

#define [Послед. символов] [Значение]

Если где-нибудь в тексте программы транслятору встретиться указанная последовательность символов (до 16), то она заменится своим значением.

При написании подпрограмм программист часто не знает заранее адреса в памяти, где они будут располагаться. Действительно, программа на ассемблере часто содержит большое количество небольших подпрограмм, к которым не предъявляется каких-то особых требований по размещению в памяти. Было бы чрезвычайно обременительно вручную просчитывать количество памяти для каждой процедуры, и потом, на основе этой информации высчитывать адрес начала следующей процедуры. Транслятор позволяет пометить любое место программы метку адреса:

#define [Послед. символов]

После этого при использовании команд типа CALL, JMP можно будет просто написать указанную в метке последовательность символов в качестве адреса. Если же необходимо задать строгое расположение начала процедуры в памяти, но перед первой командой этой процедуры необходимо поставить её адрес.

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

Результатом работы транслятора является файл *.OBJ. Его структура:

[Адрес] [Байт];<Комментарий>

Этот файл представляет собой список байтов, которые по соответственный адресам будут записаны в ПЗУ программатора. Этот файл доступен для редактирования обычными редакторами, но делать это очень сложно.

Если возникает необходимость перекодировать такой файл обратно в команды ассемблера, то надо воспользоваться имитатором, который содержит деассемблер.

Соседние файлы в папке курсовой проект