Подготовка исходного текста программы
3.2.1. Для того, чтобы создать исходный текст программы (модуля программы), необходимо предварительно разработать алгоритм функционирования микропроцес-сорной системы, а также изучить систему команд МК и способы адресации операндов. Из программно-аппаратных средств нужны только компьютер и любой текстовый редактор, работающий в среде MS DOS и создающий ASCII-файл, например, встроенный редактор Norton Commander, Multi-Edit, Лексикон и др.
Правила исходного языка (source language), который используется для первичного представления программы, определяются типом транслятора, который будет использоваться для перевода исходного текста в машинные коды МК. В данном учебном пособии рассматривается программирование на языке ассемблера Micro Series 8051 Assembler (в дальнейшем ассемблер А8051) фирмы IAR Systems (версия 1.80/MD2).
3.2.2. В тексте программы, написанном на языке ассемблера, каждая строка представляет собой одну команду МК или псевдокоманду (pseudoinstruction) ассемблера и состоит, в общем случае, из следующих четырех полей:
МЕТКА: ОПЕРАЦИЯ ОПЕРАНД(Ы) ;КОММЕНТАРИЙ.
Поля отделяются друг от друга любым количеством пробелов, но не меньше, чем одним.
В отличие от мнемокодов команд МК, которые должны быть переведены программой-транслятором в машинные коды, псевдокоманды ассемблера не преобразуются в машинные коды, а являются инструкциями самого транслятора и служат для управления процессом трансляции (см. пп. 3.2.7 ¸ 3.2.10).
3.2.3. В поле “МЕТКА” записывается символическое имя адреса ячейки памяти, в которой хранится первый байт (код операции) следующей за меткой команды. Метка должна состоять из букв латинского алфавита и цифр. Допускается также использование символа “_”. Максимальная длина метки – 31 символ. Метка должна начинаться с буквы и заканчиваться двоеточием. В качестве меток нельзя использовать мнемокоды команд МК, псевдокоманд ассемблера и мнемонические обозначения регистров специальных функций.
3.2.4. В поле “ОПЕРАЦИЯ” записывается мнемокод команды МК или мнемокод псевдокоманды ассемблера, причем, в последнем случае метка отсутствует, поскольку псевдокоманды не транслируются в двоичные коды и не записываются в программную память МК. Исключениями являются псевдокоманда резервирования памяти и определения байта данных DB, которая может иметь метку (см. п. 3.2.9), и псевдокоманда определения символического имени EQU, в поле метки которой записывается определяемое имя без двоеточия в конце (см. п. 3.2.7).
3.2.5. В поле “ОПЕРАНД(Ы)” указываются операнды, участвующие в операции. Команды МК могут быть безоперандными (NOP, RET, RETI), однооперандными или двухоперандными. Операнды разделяются запятой. На первом месте всегда находится операнд-приемник, на втором – операнд-источник. По адресу операнда-приемника после выполнения операции помещается результат.
При программировании МК семейства MCS-51 используются 6 способов адресации операндов: прямая, косвенная, регистровая, неявная, непосредственная и индексная адресация (см. подраздел 2.8).
В качестве прямого адреса операнда может использоваться число или символическое имя.
Для обозначения косвенной адресации применяется префикс “ @ “.
При непосредственной адресации операнд задается числом или символическим именем с обязательным указанием префикса непосредственного операнда “ # ”. Допускается в качестве непосредственного операнда использовать вместо числа арифметическое выражение, например #2+3, или символ, заключенный в апосторофы, например ’L’. В первом случае на этапе трансляции вместо арифметического выражения будет подставлено значение этого выражения, a втором случае – код ASCII соответствующего символа.
В командах передачи управления операндом может быть число, метка или косвенный адрес.
Числа в тексте программы могут быть представлены в десятичной, двоичной, восьмеричной или шестнадцатеричной форме. Для обозначения систем счисления применяются следующие суффиксы: D – для десятичной, B – для двоичной, Q – для восьмеричной, Н – для шестнадцатеричной системы счисления. Число без суффикса считается десятичным.
Символические имена и метки, используемые в качестве операндов, должны быть определены (см. п. 3.2.7). Исключение составляют символические имена регистров специальных функций, которые являются зарезервированными словами языка ассемблера А8051 (кроме имени PCON) и не требуют определения.
3.2.6. Поле “КОММЕНТАРИЙ” используется программистом для пояснений. Оно начинается с символа “ ; ” и может содержать любые символы, поскольку полностью игнорируется ассемблером. Ассемблер А8051 позволяет использовать в комментариях буквы русского алфавита.
3.2.7. Для определения символических имен используется псевдокоманда ассемблера EQU, например:
CONST EQU number,
где CONST – определяемое имя, а number – числовое значение.
Символические имена и метки, используемые в одном модуле программы, а определяемые в другом модуле, должны быть в первом модуле объявлены внешними (external) , например:
EXTERN LABEL1,
а во втором модуле – общими (public), например:
PUBLIC LABEL1.
3.2.8. Для того, чтобы иметь возможность управлять размещением машинных кодов программы в программной памяти МК, программа разбивается на сегменты. Адреса сегментов определяются на этапе компоновки программы (см. подраздел 3.4).
Сегмент (segment) программы может быть объявлен абсолютным (неперемещаемым) с помощью псевдокоманды ассемблера
ORG addr,
где addr – абсолютный адрес сегмента в программной памяти,
или относительным (перемещаемым) с помощью псевдокоманды ассемблера
RSEG name,
где name – символическое имя сегмента.
3.2.9. Для размещения констант в программной памяти МК используется псевдокоманда ассемблера DB(define byte), в поле операндов которой записываются значения байтов данных, разделяемые запятыми, например:.
DB 1FH,2FH,3FH.
3.2.10. Исходный текст программы обязательно должен заканчиваться псевдокомандой END, которая сообщает транслятору о завершении процесса трансляции.
3.2.11. По окончании работы исходный текст программы (модуля программы) нужно сохранить на магнитном диске компьютера в файле с расширением msaили s03, которые являются стандартными расширениями ассемблера А8051. В дальнейшем будем называть этот файл исходным модулем программы (source module).
Дата добавления: 2015-10-09; просмотров: 959;