Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"


 ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА


Download 0.63 Mb.
Pdf ko'rish
bet4/74
Sana29.03.2023
Hajmi0.63 Mb.
#1306393
1   2   3   4   5   6   7   8   9   ...   74
Bog'liq
978-5-321-02171-21 2012 (1)

1. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ АССЕМБЛЕРА
Приведены необходимые данные по программированию на языке
ассемблера микроконтроллеров семейства x51. Вначале рассмотрены
общие вопросы программирования на языке ассемблера, а затем при-
ведены примеры конкретных программ и разобраны типовые задачи,
предлагаемые студентам при выполнении практических занятий.
1.1. Язык ассемблера ASM-51
1.1.1. От исходного текста к машинным кодам
Язык программирования ASM-51 поддерживает модульное напи-
сание программ. Графическое изображение процесса подготовки про-
граммы на языке программирования ASM-51 приведено на рис 1.1.
Обсудим этапы подготовки программы более детально.
Рис. 1.1. Процесс подготовки программы на языке программирования ASM-51
Исходный модуль – это файл, в котором хранится исходный текст
программы (или просто – программа), написанный на языке ассем-
блера. Для исходного текста программы принято использовать одно
из следующих расширений имени файла: asm, a51, srs или s51. Ис-
ходный текст программы можно написать, используя любой тексто-
вый редактор, сохраняющий результат редактирования в кодировке
ASCII.
7


1. Программирование на языке ассемблера
Исходный модуль подается на вход программы ассемблер, а на
выходе при этом получают другой модуль, который называется объ-
ектный модуль.
Объектный модуль – это файл с промежуточным представлением
отдельного модуля программы, получаемый в результате трансляции
исходного модуля. Объектный файл содержит в себе бинарный код
программы , который может быть объединен с другими объектными
файлами при помощи редактора связей (компоновщика) для получе-
ния готового исполняемого модуля либо библиотеки. Иными слова-
ми, объектный модуль – это программа на машинном языке с нераз-
решенными внешними ссылками. Получить объектный модуль мож-
но, указав имя исходного модуля программы в качестве параметра
программы-транслятора в командной строке или строке командного
файла:
asm51.exe modul.asm
Программа редактор связей (компоновщик) позволяет объединять
несколько объектных файлов (модулей) в один. Для объединения нес-
кольких модулей в исполняемую программу имена всех модулей пе-
редаются в редактор связей в качестве параметров при запуске этой
программы. Пример вызова редактора связей из командной строки
для объединения трёх модулей:
rl51.exe main.obj modul1.obj modul2.obj
Результатом работы редактора связей является исполняемый модуль.
Имя исполняемого модуля программы по умолчанию совпадает с име-
нем первого объектного файла в списке параметров строки запуска ре-
дактора связей. Исполняемый модуль программы записывается в файл
без расширения. Формат файла представляет собой двоичное пред-
ставление каждого байта данных без каких-либо адреса, контрольной
суммы или описания формата. Этот формат используют, например,
для передачи данных внутрисхемному эмулятору.
При компиляции исходного текста программы транслятор состав-
ляет таблицу ссылок на константы, переменные и команды. Если при
втором просмотре исходного текста программы, во время которо-
го формируется объектный модуль, транслятор не обнаружит имени
переменной или метки в своей таблице, то будет сформировано сооб-
щение об ошибке и объектный модуль не будет сформирован.
Для того чтобы транслятор вместо формирования сообщения об
ошибке записал в объектный модуль информацию, необходимую для
редактора связей, нужно использовать специальные директивы ссы-
лок на внешние переменные или метки. Обычно эти директивы назы-
8


1.1. Язык ассемблера ASM-51
ваются PUBLIC (общие) и EXTRN (внешние). Для ссылки на пере-
менную или метку используется директива EXTRN, в которой пере-
числяются через запятую метки и переменные. Редактор связей дол-
жен сначала получить их точное значение из другого модуля, а затем
модифицировать все команды, в которых эти метки или переменные
используются. Для того чтобы редактор связей мог осуществить свя-
зывание модулей в единую программу, переменные и метки, объяв-
ленные, по крайней мере, в одном из модулей как EXTRN, в другом
модуле должны быть объявлены как доступные для всех модулей при
помощи директивы PUBLIC.
Многие микропроцессорный устройства (программаторы, стенды
и т.п.) не могут напрямую работать с объектным форматом испол-
няемого модуля программы, поэтому для загрузки машинного кода
в них необходимо преобразовать объектный формат исполняемого
модуля в общепринятый гексадецимальный (hex) код. При преобра-
зовании форматов вся отладочная информация теряется. Машинный
код процессора в гексадецимальном формате называется загрузочным
модулем.
Загрузочный модуль программы получают при помощи програм-
мы-преобразователя oh.exe, передав ей в качестве параметра имя
файла исполняемого модуля программы:
oh.exe main
Полученный файл main.hex загружается в разрабатываемое устрой-
ство или программный симулятор для последующей отладки.
1.1.2. Исходный текст программы
Исходный текст программы представляет собой последователь-
ность операторов языка, сгруппированных в сегменты и оформленных
в виде файла.

Download 0.63 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   74




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling