Лабораторные и практические работы по микропроцессорам |
Страница 4 из 8
Программирование микропроцессора 8080 Исходные тексты программ создаются на языке ассемблера микропроцессора i8080 (КР580ВМ80) в любом текстовом редакторе с ASCII кодировкой и сохраняются в файле с расширением *.asm. Для компиляции в машинные коды используется кросс ассемблер. В результате работы кросс ассемблера входной текстовый файл с расширением *. asm компилируется в т.н. абсолютный объектный файл с расширением *. obj, содержащий последовательность машинных кодов (инструкций), начальный физический адрес которого задан директивой ассемблера " ORG". Одновременно формируется файл листинга с расширением *.lst для получения информации о результате компиляции, в частности о наличии синтаксических ошибок. При подготовке исходного текста программы необходимо придерживаться правил синтаксиса для данного ассемблера. Программа на языке ассемблера состоит из строк, длина которых не более 255 символов. Каждая строка может быть:
Ассемблер не различает прописных и строчных латинских букв: [ A..Z] = [a.. z]. Рекомендуется в программе пользоваться латинским алфавитом, а в комментариях – латинским или русским по предпочтению. Строка программы имеет вид: метка: команда/директива операнды ;комментарий Исключение составляет директива EQU, строка с которой имеет вид: символическое имя EQU константа/символическое имя ;комментарий Поля метки, команды или директивы, операндов и комментария должны разделяться хотя бы одним символом пробела или табуляции, например: HERE: LXI H,array ;Адрес массива array в пару HL Метка, также как символическое имя, последовательность от 1 до 6 символов, букв или цифр, начинающаяся с буквы (без пробелов), например: Jump или Loop01 Метка, стоящая слева от команды или директивы (кроме EQU), должна оканчиваться двоеточием, например: Loop01: Исключение составляет символическое имя в директиве EQU, например: Loop01 EQU 0FFh ;Loop01 = 00FF Определение символического имени – присвоение ему значения путем указания слева от команды/директивы или директивой EQU. Нельзя указывать метку слева от директив ORG и END. Эти директивы ассемблера являются обязательными. Команда – одна из допустимых команд микропроцессора i8080. В данном компиляторе не поддерживаются команды, не имеющие практического смысла и реализации в микропроцессоре: MOV A,A; MOV B,B; MOV C,C; MOV D,D; MOV E,E; MOV H,H; MOV L,L. Директивы ассемблера:
В приведенном выше списке курсивом выделены две директивы, обязательные для работы компилятора. Остальные директивы облегчают работу над программой, но их отсутствие не нарушает работу компилятора. Синтаксис директив ассемблера: ORG константа/символическое имя ;комментарий При использовании символического имени оно должно быть определено выше директивой EQU, например: метка EQU константа/символическое имя ;комментарий метка: DB константа/символическое имя ;комментарий метка: DW константа/символическое имя ;комментарий метка: DS константа/символическое имя ;комментарий END;комментарий Операнды – один или два, в зависимости от синтаксиса команды. Операнды должны разделяться запятой, например: MOV A, B Операнды могут быть: - символическим именем, допускаемым синтаксисом команды, например: ORAM RST 0 - символическим именем, определенным в программе, например: CPITEST - константой в десятичной, шестнадцатеричной или двоичной системе счисления, например: MVIA, 10101010b Если команда предполагает однобайтовый непосредственный операнд, то используется младший байт указанной константы или определенного символического имени. Константы могут быть:
Поле комментария должно быть последним и начинаться символом ";". Строка комментария должна начинаться символом ";" и далее может содержать любые символы. Пустая строка может содержать символы табуляции и пробелы.
|