Основные понятия и структура строки ассемблера.
Ассемблер – это программа -транслятор, преобразующее исходный текст из символической в машинную форму. Язык ассемблера – это язык символических кодов (ЯСК).
Машинная программа или программа на машинном языке – отображение содержимого памяти в двоичном коде или в 8- и 16 – ричном эквиваленте.
Область применения ассемблера – разработка программ для микроконтроллеров, тестирование при ремонте СУ, отслеживание процессов на физическом уровне и наблюдение происхождения сигналов по шинам..
Для каждой команды в машинной программе определены: КОП (кода операции), операнд и их адреса. Например, для перехода по адресу FE 00H фрагмент программы будет выглядеть следующим образом:
Адрес Содержимое
800 С3 - КОП
801 00 - операнд
802 FE – операнд
Команда микропроцессора должна содержать информацию двух видов: во-первых, команда должны сообщать микропроцессору, что делать (выполнять сложение, очистку, пересылку, сдвиг и т.п.); во-вторых, указывать адрес, т.е. местоположение обрабатываемых данных. Например, команды могут информировать микропроцессор о следующих действиях: добавить к содержимому аккумулятора содержимого некоторой области памяти, очистить аккумулятор, переместить данные из р-ра А в р-р В, выполнить сдвиг содержимого аккумулятора и т.д. Если длина команды (формат) составляет два или три слова (слово – 1 байт), то первое из них – это код операции (КОП), а второе и третье – адрес. При этом в трехкратной команде после кода операции следует старший байт адреса, а затем младший байт адреса, или 16-разрядные (2 байта) данные. А при выполнение команды сначала считывает младший байт адреса, а затем старший байт (также считываются байты данных).
|
|
В ассемблере адреса, коды операций, операнды отображают буквенными мнемоническими обозначениями, например:
START : LDA X; - загрузка аккумулятора
|
Последовательно записанные команды размещаются в последовательных ячейках памяти.
При размещении команд используется LC – счетчик адресов ассемблера, который указывает адрес очередной свободной ячейки памяти. При этом действует соглашение: последовательно записанные команды размещаются в последовательных ячейках памяти.
Соглашение позволяет задавать адрес на всех команд ( как в машинной форме), а также начала непрерывной области памяти (экстента сегмента).
Блок-схема алгоритма решения задачи составляется из отдельных блоков. Различают четыре типа блоков, каждый из которых имеет один или несколько входов и один или несколько выходов. Прямоугольник соответствует какой-либо операции на обработку данных.
|
|
- для выполнения такой операции микропроцессору требуется одна команда.
Однако для блока
МП использует несколько команд.
Блок, использующий форму ромба, используется для символического обозначения проверки выполнения кого-либо условия с результатом да и нет.
Запись программы на языке ассемблера ведется с использованием символических адресов, т.е. вместо числовых значений адресов используются имена. Начало программы д. б. «привязано» к определенному числовому адресу, относительно которого и ведется отчет значений символических адресов.
Программу на языке ассемблера составляют с помощью служебной программы, называемой редактором. // Последняя помогает программисту легко и без ошибок записывать команды языка ассемблера, адреса и данные. // Если ошибки и возникают, то редактор позволяет их исправить.
Написанная и откорректированная с помощью редактора программа может ассемблироваться. Ассемблер – служебная программа, преобразующая символические имена (сокращенные английские слова) и символические адреса в команды в машинном коде и числовые адреса. Процесс редактирования – ассемблирования носит итерационный характер; после корректировки всех ошибок его повторении завершается.
|
|
Часто алгоритм решения задачи записывается в виде нескольких коротких программных модулей. После ассемблирования каждого программного модуля для объединения модулей используется программа редактора связей. Редактор связей определяет каждой машинной команде свое место в памяти и обеспечивает программным модулем возможность обращения друг к другу.
Вопрос 20
Действия ассемблера при трансляции.
1-й проход по исходному тексту
1. Просмотр последовательности команд и выделение памяти для кодов команд.
2. Просмотр имен (переменных, констант) и выделение для них памяти.
3. Формирование таблиц имен (меток), присвоение им численных значений.
2-й проход по исходному тексту
3. Преобразование символических обозначений в машинные коды, формирование выходных файлов.
|
|
Пример:
1-й проход
Формирование таблицы имен, определенных пользователями:
START=0800
Y=0901
X=0900
STOP=0807
При этом надо учесть, что в ассемблере резервируется внутренняя таблица постоянных имен, которые нельзя использовать как имена переменных:
LDA=3A END
RLC=07 ORG
STA=32 A,B,C,D,E,H,L,SP,PSW
HLT=76
2-й проход
Постановка значений имен (символов).
Формирование выходных файлов.
Абсолютный модуль.
Листинг.
Таблица перекрестных ссылок.
Распределение памяти.
В итоге ассемблер создает файл, включающий коды:
а) содержимое ячеек машинной программы
б) служебную информацию для размещения кодов по заданным физическим (абсолютным) адресам -абсолютный модуль. После этого программа – абсолютный загрузчик переносит коды машинной программы из абсолютного модуля в память и запускает.
Непрерывному участку памяти (экстенту) в абсолютном модуле соответствует физический блок или запись вида: ОС DOS1800 (ISIS II).
Кроме того, ассемблер выдает пользователю сопроводительные документы:
Листинг – коды машинной программы и соответствующие им операторы исходного текста; таблицы меток; таблицы перекрестных ссылок. Для каждой метки (имени) указаны строки листинга, где есть обращение к данной метке, что необходимо для отладки и документирования.
Дата добавления: 2018-04-15; просмотров: 396; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!