Однопросмотровый макроассемблер — КиберПедия 

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Однопросмотровый макроассемблер

2017-11-21 297
Однопросмотровый макроассемблер 0.00 из 5.00 0 оценок
Заказать работу

Начало алгоритма

 

МТДС = 0

МНТС = 0

ФЛАГ ВЫХОДА = 0

 

цикл пока!(ФЛАГ ВЫХОДА) {

 

чтение следующей строки ВХТ

НАЙДЕНО = поиск кода в МНТ

если (НАЙДЕНО) {

 

МДИ = 1

УКАЗАТЕЛЬ = индекс из МНТ

Заполнение списка параметров АЛА

 

цикл {

УКАЗАТЕЛЬ ++

чтение след. строки из МДТ

подстановка параметров

вставка во ВХТ

} пока!(операция MEND)

 

 

иначе если!(операция MACRO) {

вывод строки в ВЫХТ1

если (операция END) ФЛАГ ВЫХОДА = 1

}

иначе {

чтение идентификатора

запись имени и индекса в МНТ

МНТС ++

приготовить массив списка АЛА

запись имени в МДТ

МДТС ++

 

цикл {

чтение следующей строки ВХТ

подстановка индекса операторов

добавление в МДТ

МДТС ++

} пока!(операция MEND)

}

}

 

конец алгоритма

Описание алгоритма

Данный алгоритм является упрощением алгоритма приведенного раньше. Различие состоит в том, что современные средства интеллектуализации программирования дают нам возможность осуществлять вставки и удаления из крупных массивов с минимальными затратами процессорного времени, что было невозможно при использовании перфокарт.

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

Таким образом, расширение исходного макроса может быть напрямую вставлено в массив исходного текста и обработано в расширенном виде. Такая технология позволяет значительно упростить алгоритм обработки макроязыка.

:

Реализация внутри Ассемблера

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

Но макропроцессор также может быть реализован внутри первого прохода Ассемблера. Такая реализация позволяет исключить промежуточные файлы, и позволяет достичь на порядок большей интеграции макропроцессора и Ассемблера путем объединения сходных функций.

Например, возможно объединение таблиц имен макросов и имен кода операции; специальный признак может указывать на то макро это или встроенная операция.

Основные преимущества включения макропроцессора в первый просмотр состоят в следующем:

u Многие функции не надо реализовывать дважды (например, функции ввода-вывода, проверки на тип, и т.п.)

u В процессе обработки отпадает необходимость создавать промежуточные файлы или массивы данных.

u У программиста появляются дополнительные возможности по совмещению средств Ассемблера (например, команды EUQ) совместно с макрокомандами.

Основные недостатки:

u Программа должна требовать больше оперативной памяти, что критично на некоторых типах ЭВМ, не имеющих много оперативной памяти.

u Реализация подобного типа задачи может оказаться на порядок сложнее, чем отдельная реализация Ассемблера и макропроцессора.

Отдельно от рассмотрения реализации аппарата макросредств в Ассемблер лежит рассмотрение дополнительного просмотра, используемого многими программами для выявления определенных характеристик исходной программы, таких как типы данных.

Располагая таким макропроцессором, можно использовать команды условной компиляции, позволяющие поставить расширение макрокоманд в зависимость от определенных характеристик программы.

 

?

Справочник по командам языка Ассемблера

Обозначение регистров

Команды, использующие регистр, могут содержать три бита, указывающих на конкретный регистр, и один бит «w», определяющий размер регистра: байт или слово. Кроме того, лишь некоторые команды обеспечивают доступ к сегментным регистрам.

Байт способа адресации

Байт способа адресации, если он присутствует, занимает второй байт машинного кода и состоит из следующих трех элементов:

1) mod — двухбитового кода, имеющего значения 11 для ссылки на регистр и 00, 01 и 10 для ссылки на память;

2) reg — трехбитового указателя регистра;

3) r/m — трехбитового указателя регистра или памяти (r — регистр, m — адрес памяти).

Кроме того, первый байт машинного кода может содержать бит «а», который указывает направление потока между операндом 1 и операндом 2.

Биты MOD

Два бита mod определяют адресацию регистра или памяти.

Биты REG

Три бита reg (вместе с битом w) определяют конкретный восьми- или шестнадцатибитовый регистр.

Биты R/M

Три бита г/m (регистр/память) совместно с битами mod определяют способ адресации.

 


Поделиться с друзьями:

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.