"DVDXpert" - компас в мире Hi-Fi и High End техники и другой stereo и home cinema аппаратуры.

ГЕНЕРАЦИЯ ОБЪЕКТНЫХ МОДУЛЕЙ (ФАЙЛОВ)

21-12-2023

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

Когда преобразование исходного текста к виду, соответствующему требованиям перемещаемого кода, завершено, может быть сгенерирован объектный файл Для этого в оболочке MPASM для Windows или в соответствующем окне MPLABIDE надо галочкой отметить опцию "Object File" Диалоговые окна среды MPLAB подробно описаны в предыдущей главе.

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

Программа имеет иллюстративный характер, однако будучи ассемблированной, работает правильно. Исходный текст предназначен для контроллеров Р16С5Х, но с незначительными изменениями его можно применить и для PIC16X8X. Этот пример иллюстрирует создание перемещаемого кода и библиотечного модуля. Практические примеры программ с подробными комментариями мы рассматриваем далее, в соответствующей главе.?

Очевидно, что подпрограмма, перемножающая два 8битных числа, может нам понадобиться в дальнейшем и ее целесообразно выделить в библиотечный модуль. Для этого, как показано далее, выделяем подпрограмму в отдельный фрагмент и объявляем переменные mulcnd, mulplr, H_byte и L_byte как глобальные. Также объявляем глобальным имя подпрограммы умножения тру. Для того чтобы компоновщик зарезервировал ячейки ОЗУ под переменные, отводим им секцию данных директивой UDATA и директивой RES резервируем под каждую переменную необходимое число ячеек. Далее исходный файл ассемблируется как объектный модуль и на выходе получается объектный файл с расширением ".О".

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

Когда по ходу написания некой прикладной программы необходимо несколько раз поместить в нее фрагмент, выполняющий перемножение двух чисел, нет нужды повторять фрагмент исходного кода, надо лишь вызвать макрос и передать ему в качестве аргументов имена необходимых переменных (множителей и приемников результата) В выходной исполняемый код при ассемблировании будут помещены необходимые процессорные команды со ссылками на соответствующие ячейки памяти Разумеется, это иллюстративный пример, и логичнее было бы оформить этот фрагмент как подпрограмму Но бывают случаи, когда, например, необходимо выполнять одинаковую последовательность действий над разными ячейками памяти (регистрами общего пользования)


Смотрите также:
 ГЕНЕРАЦИЯ ОБЪЕКТНЫХ МОДУЛЕЙ (ФАЙЛОВ)
 Возможности виртуальных студий
 ОСТАНОВ ПО УСЛОВИЮ
 ЦИФРОВЫЕ КОНСТАНТЫ И СИСТЕМЫ СЧИСЛЕНИЯ
 Маршрутизатор

Добавить комментарий:
Введите ваше имя:

Комментарий:

Защита от спама - решите пример: