Адресная шина
Адресная шина должна иметь разрядность, достаточную для передачи адреса заданной длины.
Шина данных. Разрядность шины данных обычно совпадают с длиной байт. В случаи, когда все команды имеют одинаковую длину, она совпадает с основным словом.
Программный счетчик – содержит адрес текущей выполняемой программы. Автоматически увеличивает длину команд, при переходе на следующую.
Регистр команд (IR) – предназначен для приема из памяти и хранении кода команд.
Дешифратор –определяет что это за команда.
Блок управления и синхронизация – выполняет управлением микропроцессором.
DAK – регистр данных и адреса.
Роны – регистры общего назначения.
Адрес исполнительный (адрес ячейки памяти или регистра) с которым работает команда, можно указывать различными способами, руководствуюсь следующими соображениями.
Исполнение команд с более коротким адресом.
Обеспечение простого доступа к возможно большему объему памяти.
Возможность изменения содержимого адресной части без изменения команды.
Обеспечение более быстрой адресации.
Использования более простого метода адресации во избегания ошибок.
Прямая адресация ADD B – в прямой адресации адрес исполнительный является частью команды. Длина команды зависит от адреса.
Прямая регистровая – место адреса исполнительного хранится номер регистра.
Косвенная адресация – адрес исполнительный находится по адресу, указанному в команде.
Косвенно регистровая – адрес исполнительный находится по адресу регистра.
Непосредственная адресация – обрабатываемые данные являются частью команды.
Относительная – Адрес исполнительный формируется путем сложения программного счетчика и смещением, которое находится в команде.
Индексная адресация – адрес исполнительный образуется путем сложения индексного регистра с адресом, который находится в команде.
Базовая адресация – используется для организации перемещения программы в памяти. Для этого пишется псевдо команда, которая закрепляет один из регистров в качестве базового. В этот регистр записывается адрес загрузки и все исполнительные адреса записываются.
Адресация с авто увеличением или авто уменьшением – применяется для организации циклов. Перед выполнением команды или после, содержимое регистров, в котором находился операнд увеличивается или уменьшается на единицу.
Стековая – адресом данных является содержимое указателя стеков.
Система команд микро процессора.
Команды микропроцессора в памяти занимают от 1 байта до максимальной длены.
1 байт команды содержит код операции. В некоторых код операций может размещаться и во втором байте. Требование к системе команд это
функциональная полнота – система команд должна предоставлять максимально удобные средства для программирования, по составлениям алгоритма, в условиях ограниченных ресурсов.
Минимальность – количество длина команд должна быть минимальной.
Система команд микропроцессора обычно содержит следующие операции:
Операции пересылки обеспечиваю передачу операнда источника к операнду приемника, без содержательного их преобразователя.
Арифметические операции – сложение вычитание, умножение, деление.
Логические – и, или, не.
Сдвиг.
Условные переходы.
Изменение содержимого регистра кода условий (флажки).
Команды вода, вывода и останова.
Проектирование системы команд значительной степени зависит от заданных режимах адресаций.
При выборе формата команд следует учитывать следующие особенности:
Максимальное количество команд 256.
В команда с индексной адресацией нужно обеспечить возможно большую величину смещения, не превышающую оперативную память
RI 0 | 00 |
RI 1 | 01 |
RI 2 | 10 |
Команда с непосредственной адресацией – длина непосредственного операнда минимум должна быть 1 байт.
Команды должны быть унифицированы место положения первого и второго операнда. Первый операнд источник, второй приемник.
Некоторые команды могут только составлять код операций.
Смещение.
Ассемблер – машинно-ориентированный язык, операторы которые транслируются один к одному, либо один к нулю (псевдо операции, передают информацию загрузчику, линковщику). Ассемблер наиболее эффективно используют ресурсы ЭВМ. В общим виде операторы ассемблера выглядят так: метка, код операции, [операнды], [комментарий], или [признак комментария].
Существуют различные типы ассемблера:
Резидентный ассемблер – программа, которая хранится в ПЗУ и к ней имеется постоянная доступ. Кросс ассемблер – выполняется на ЭВМ общего назначения, и написана на языке программирования этого ЭВМ. Достоинства – разработка программы предшествует технической реализации. Используется мощная программное обеспечение ЭМВ. Выразительность языка и диагностика, обеспечивается преимущества машины выразительности языка и диагностики.
Существую абсолютные и перемещаемые ассемблеры. В абсолютном ассемблере адрес загрузки определяется псевдокомандой. Адрес загрузки известен во время ассемблирования, поэтому при построении адресных константы команд выполняется в абсолютных адресах. В перемещаемом ассемблере возможность определить адрес загрузки происходит не вовремя ассемблирования а во время загрузки программы в память. Для этого относительный адреса адресных констант команд увеличивается на адрес загрузки.
Однопроходные и двухпроходные – формированию объектной программы за один просмотр препятствует ссылки в перед, в командах передачи управления. Ассемблер не может сразу определить адрес перехода. Существует два варианта построения однопросмотровых ассемблеров:
Неопределенная метка записывается в таблицу меток. По мере нахождения меток и определения адреса этой метки, в зарезервированные места записываются адрес. Ссылок на одну и ту же метку может быть много.
Ассемблер строит дополнительную таблицу переходов. Все команды обращения в перед осуществляют передачу косвенно, через эту таблицу.
Достоинством однопросмотрового ассемблера является выигрыш в скорости ассемблирования. Тем не менее большинство ассемблеров современных ЭВМ двухпросмотровые. Целью первого просмотра является определения адреса для каждой команды в программе и формирования символических имен или меток. Целью второго прохода является генерация машины команды констант, обработка псевдо команд а так же распечатка листинга.
Синтаксический анализ исходного текста программы.
Распределения памяти (назначения относительных адресов) для команд, констант, переменных и литералов.
Трансляции исходной программы в объектный код.
Формирования информации для загрузчика, линковщика.
Формирования листинга программы.
Основные базы данных для формирования просмотра.
Файл исходного текста
Значение программного счетчика.
Таблица машинных операций. Длина команды. Формат команды.
Таблица псевдоопераций.
Таблица имен (меток).
Таблица литералов.
Таблица внешних имен.
Таблица входов.
Лекция (5_10_07)
Машино зависимые части ассемблера:
Форматы данных и форматы команд
Режимы адресации или способы адресации
Перемещение.
Машино не зависимые характеристики ассемблера. Синтаксис языка довольно прост. При написании команд используются приемы которые облегчают написание программы.
Косвенная адресация – для реализации косвенной адресации используется прием, который называется префикс.
Непосредственного операнда
Для литералов – позволяет отказаться от использования отдельного предложения для определения константы и соответственно его имя. Таблица литералов записывается после тела программы.
Средства определение имен и задание значения.
Выражение. В большинстве ассемблеров на ряду с одиночными терминами разрешают использовать выражения. Каждое такое выражение вычисляется ассемблером во время трансляции, а за тем полученное значение используется в виде адреса или непосредственного операнда.
Программные блоки – многие ассемблеры предоставляют гибкие средства обработки исходных программ. Они позволяют располагать сгенерированные машинные командные данные в порядке отличного от исходного. Создавать независимые части управляющие секции. Каждая из этих частей сохраняет свою индивидуальность и обрабатывается загрузчиком отдельно.
Объектная программа
В заключительной фазе своей работе, ассемблер должен записать полученный объектный код на некоторое устройства вывода. После этого объектная программа должна помещается в оперативную память. Для реализации этого используются 3 основные процесса:
Загрузка – обеспечивает размещение в оперативной памяти для исполнения. Это системная программа и традиционная система.