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

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

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

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

2017-11-21 301
Однопросмотровый макроассемблер 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 определяют способ адресации.

 


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

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

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

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

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



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

0.01 с.