Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры (конспект).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
972.29 Кб
Скачать

2.2 Язык ассемблера

Язык ассемблера (assembler language) - язык программирования микропроцессорных систем, ориентированный на определенную архитектуру системы. Программа, написанная на языке ассемблера, переводится в машинные коды с помощью специального компилятора.

Язык ассемблера использует систему команд процессорного ядра и специальные директивы, указывающие программе ассемблеру, как организовать различные секции программы, где располагать данные, как связать отдельные процедуры и т. д. Из-за множества архитектурных отличий различных систем единого языка ассемблера не существует. Каждый разработчик создает свой язык и свое программное обеспечение для работы с ним. Компилятор транслирует исходные коды с языка ассемблера в объектный код. Полученный объектный может быть непосредственно запрограммирован в микроконтроллеры.

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

Входная строка может иметь одну из четырех форм:

  • [метка:] директива [операнды] [Комментарий]

  • [метка:] инструкция [операнды] [Комментарий]

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

  • Пустая строка

Комментарий имеет следующую форму:

; [Текст]

Позиции в квадратных скобках необязательны. Текст после точки с запятой (;) и до конца строки игнорируется компилятором.

Компилятор не требует, чтобы метки, директивы, комментарии или инструкции находились в определенной колонке строки.

Команды микроконтроллера и директивы языка ассемблера оперируют выражениями. Выражением считается набор операндов (operands), связанных между собой операторами (operators) и функциями (functions).

Операнды

Операндами языка ассемблера могут быть:

  • Определяемые пользователем метки.

Метка – это любая последовательность буквенных или цифровых символов, начинающихся с буквы. Символы, допускающиеся в метках перечислены ниже:

! $ % & : ? [ \ ] ^ _ ` { | } ~ A-Z a-z

Метка не должна совпадать с зарезервированными компилятором именами.

Метка может располагаться перед командой/директивой или входить в директиву.

Если метка располагается перед командой (или перед директивой) микроконтроллера, то после неё ставится символ : (двоеточие). Двоеточие указывает ассемблеру, что метка задает состояние программного счетчика в отмеченном месте программы.

Например,

Lab23: mov R6,R7 ; строка в программе отмечена меткой Lаb23

Если метка входит в директиву то, она рассматривается как один из операндов этой директивы и двоеточием не отмечается.

  • Определяемые пользователем с помощью директивы set переменные.

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

  • Определяемые пользователем с помощью директивы equ константы.

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

  • Целые константы

Начинаются с цифры, заканчиваются буквой, определяющей базу системы счисления:

H – шестнадцатиричная,

D – десятичная,

O, Q – восьмеричная,

B – двоичная.

  • Строковые константы

Это последовательность символов в одинарных (‘) или (“)двойных кавычках. Если не используется директива DB, то принимается во внимание только первых два символа строковой константы, остальные отбрасываются.