Скачать 1.32 Mb.
|
^ Тема 1. Двухпросмотровый ассемблер Техническое задание. Разработать двухпросмотровый ассемблер, реализующий ассемблирование программ, использующих основной набор инструкций микропроцесссора Intel 8086. Методические указания. Основные функции ассемблера. Большинство ассемблеров выполняет два просмотра исходной программы. Основной задачей первого просмотра является поиск символических имен и назначение им адресов. Основное назначение ассемблеров состоит в трансляции, т.е. переводе мнемонических кодов операций в их эквиваленты на машинном языке. Пример mov ax, 4 B8 0004 int 1oh cd 10 push es 06 mov bl, 50 b3 32 Ассемблер наряду с трансляцией команд исходной программы должен также выполнять и также выполнять и так называемые директивы ассемблера. Эти директивы не переводятся непосредственно в машинные команды, а управляют работой самого ассемблера. В заключительной фазе своей работы ассемблер должен записать полученный объектный код на некоторое устройство вывода. Позднее эта объектная программа будет загружена в оперативную память для исполнения. Для представления учебной объектной программы иногда используется простой формат, в котором определены три типа записей: запись-заголовок, тело программы и запись-конец. Запись-заголовок содержит имя программы её начальный адрес и длину. Тело программы содержит машинные команды и данные программы с указанием адресов их загрузки. Запись-конец отмечает конец объектной программы и определяет адрес, с которого следует начать исполнение программы (точку входа). (если этот адрес не задан, то в качестве точки входа берется адрес первой исполняемой команды). В каждой записи первым полем является признак типа записи (Head- для записи заголовка, Code- для тела программы, End- для записи конца). Сформулируем теперь функции каждого из двух просмотров. ^ (определение имен):
Второй просмотр (трансляция команд и генерация объектного кода).
Таблицы и алгоритмы ассемблера. Простой ассемблер использует две основные внутренние таблицы: таблицу кодов операций (ОРТАВ) и таблицу символических имен (SYMТAB). ОРТАВ используется для поиска мнемонических кодов операций и перевода их в эквивалентные им представления на машинном языке. SYMТAB используется для хранения значений (адресов), присвоенных символическим именам. Ещё нам потребуется счетчик адреса (LOCCTR). LOCCTR - это переменная, которая используется для назначения адресов. Начальное значение LOCCTR определяется операндом директивы ORG. После обработки очередного предложения исходной программы длина полученной команды или области данных прибавляется к LOCCTR. Таким образом, если мы встречаем помеченное предложение исходной программы, то значение этой метки определяется текущим значением LOCCTR. Таблица кодов операций должна, по крайней мере, содержать мнемонические коды операций и их машинные эквиваленты. В более сложных ассемблерах эта таблица, кроме того, содержит информацию о длине и формате каждой команды. Во время первого просмотра ОРТАВ используется для поиска и проверки корректности задания кодов операций в исходной программе. Во время второго просмотра она используется для перевода мнемонических кодов в их машинное представление. Обычно ОРТАВ организуется в виде хеш-таблицы, в которой в качестве ключа используется мнемонический код операции. В большинстве случаев ОРТАВ представляет собой статическую таблицу, т.е. в процессе работы в ней не создаются новые элементы, а уже определенные не исключаются. В этом случае можно построить специальную хеш-функцию, обеспечивающую для конкретного набора ключей оптимальное время доступа. Однако чаще всего используются стандартные хеш-функции. Таблица имен (SYMТAB) состоит из имен и значений (адресов) всех меток исходной программы вместе с признаками, указывающими на ошибку (например, дважды определенное имя). Эта таблица может также содержать информацию о типе, длине и других характеристиках помеченной области данных или команды. Во время первого просмотра все встретившиеся в исходной программе имена вместе с их адресами (они определяются по LOCCTR) сразу заносятся в SYMТAB. Во время второго просмотра имена, используемые в качестве операндов, ищутся в SYMТAB и соответствующие им адреса используются для генерации команд. Для повышения эффективности поиска и внесения новых имен SYMТAB на протяжении всей работы ассемблера требует тщательного подбора хеш-функции. Очень часто программисты используют много похожих друг на друга имен, например LOOP1, LOOP2, … или имена, имеющие одинаковую длину (A, X, Y, Z). Важно, чтобы используемая хеш-функция обеспечивала хорошую работу с такими неслучайными именами. Часто хороший результат достигается путем деления входного ключа на простое число, равное длине таблицы. Хотя в качестве входной информации на этапе второго просмотра можно использовать исходную программу, однако, должна быть, учтена и информация первого просмотра создается промежуточный файл, который содержит с его адресом, признаком ошибки и другой необходимой информацией. Промежуточный файл является входным второго просмотра. Рабочая копия исходной программы, содержащаяся в промежуточном файле, может быть использована для того, чтобы сохранить результаты некоторых операций, выполненных во время первого просмотра (например, операции сканирования поля операндов для определения имен и способов их адресации). Это дает возможность не выполнять их ещё раз при втором просмотре. Аналогично для кодов операций и имен могут быть сохранены указатели на таблицы ОРТАВ и SYMТAB, что позволит избежать повторных операций поиска. |
![]() | Методические указания к выполнению курсовой работы «гребные электрические установки» по дисциплине «электрические системы и комплексы... | ![]() | Методические указания к выполнению курсовой работы по дисциплине «Разведка месторождений полезных ископаемых» (для студентов очной... |
![]() | ![]() | Методические указания к лабораторным работам по курсу “Архитектура компьютеров предназначены для студентов специальностей «Системное... | |
![]() | Все цитаты, цифровой, фактический материал и библиографические сведенья проверены, запись единиц соответствует стандартам | ![]() | Методические указания к выполнению курсовой работы по дисциплине «Вычислительный практикум» для студентов заочной формы обучения... |
![]() | Бобрушева В. В. Методические указания к выполнению курсовой работы по дисциплине «Основы маркетинга» для студентов 2 курса дневной... | ![]() | Компьютерная инженерия” (для студентов дневной и заочной формы обучения специальности 091501 “Компьютерные системы и сети”, 091502... |
![]() | Методические указания к выполнению курсовой работы по дисциплине «Техническая термодинамика»/ Составители | ![]() | Методические указания к выполнению контрольной работы (ргр) по дисциплине «Объектно-ориентированное программирование» (для студентов... |