- •Методические указания
- •«Моделирование программы гипотетической машины с помощью макросредств»
- •1.Введение.
- •2.Пример выполнения курсовой работы.
- •2.1.Задание.
- •2.2.Анализ задачи и разработка алгоритма.
- •2.3.Разработка программы для гм.
- •2.3.1. Определение данных.
- •2.3.2.Определие команд гм.
- •2.4.Моделирование программы гм на реальной эвм.
- •2.4.1.Выборка и запиь слов гм.
- •2.4.2. Макроопрделения для команд гм.
- •2.5.Технология подготовки программы к выполнению и ее отладка.
- •2.6. Результаты работы программы
- •3. Варианты курсовой работы
- •4.Приложения
- •2. Блоки повторения
- •2.1. Rept-блоки
- •Irpc-блоки
- •2.4 Макрооператоры
- •3. Макросы
- •113.1. Макроопределения
- •3.1. Макрокоманды
- •3. 3. Макроподстановки и макрорасширения
- •3. 5. Макросы и процедуры
- •3. 6. Определение макроса через макрос
- •3.7. Директива local
- •113.8. Директива ехiтм
- •3. 9. Переопределение и отмена макросов
- •4. Условное ассемблирование
- •4. 1. Директивы if и ife
- •4.2. Операторы отношения. Логические операторы
- •4.3. Директивы ifidn ,ifdif , ifb и ifnb
4.Приложения
А. Структура отчета по курсовой работе
Задание.
В соответствии с вариантом формулируется задание по курсовой
работе.
Цель работы.
Постановка задачи.
В этом разделе требуется формализовать задачу, указать возможные
ограничения на ее решение и т.п.
Анализ и разработка алгоритма.
Основной раздел отчета. Должен отражать результаты анализа
возможных вариантов решения задачи и выбора среди них наиболее
рационального. Обосновывается выбор структур данных и основных
операций над ними. Приводятся результаты моделирования
программ-прототипов (если они использовались для разработки
алгоритма). Определяются источники и форматы исходных данных и
содержание вывода программы.(8-10 стр.)
Алгоритм программы.
В этом разделе приводится блок-схема алгоритма программы.
Текст программы для ГМ.
Здесь обосновывается выбор команд и директив для описания данных ГМ. Приводится текст программы для ГМ с комментариями.
Разработка алгоритмов макросов.
Приводится обоснование выбора и описание алгоритмов макросов (макроопределений) и их листинг.
Результаты моделирования программы на реальной ЭВМ.
Должны быть приведены результаты тестирования программы с различными наборами данных, в том числе и с некорректными данными.
Выводы.
Приводятся комментарии к результатам и рекомендации к дальнейшему совершенствованию программы.
Литература.
В. МАКРОСРЕДСТВА
1. Макроязык
Нередко бывает полезным предварительное (до начала трансляции) преобразование текста программы. Например, может потребоваться, чтобы какой-то фрагмент программы был продублирован несколько раз или чтобы в зависимости от некоторых условий в тексте программы были сохранены одни фрагменты и удалены другие. Подобную возможность предоставляют так называемые макросредства. Расширение языка ассемблера за счет этих средств обычно называют макроязыком.
Программа, написанная на макроязыке, транслируется в два этапа. Сначала она переводится на, так сказать, чистый язык ассемблера, т.е. преобразуется к виду, где нет никаких макросредств. Этот этап называется этапом макрогенерации, его осуществляет специальный транслятор - макрогенератор. На втором этапе полученная программа переводится на машинный язык. Это этап ассемблирования, его осуществляет ассемблер.
Как видно, трансляция программы, написанной на макроязыке, занимает больше времени, чем трансляция программы на "чистом" языке ассемблера. Но зато макроязык предоставляет больше возможностей, чем просто язык ассемблера, и потому писать программы, особенно большие, на макроязыке проще.
Макрогенератор и ассемблер могут взаимодействовать двояко. Во-первых, они могут действовать независимо друг от друга: сначала текст программы обрабатывает макрогенератор и только затем начинает работать ассемблер. Такой способ взаимодействия достаточно прост для понимания и для реализации и используется довольно часто, однако у него есть серьезный недостаток: макрогенератор, работая до ассемблера, не может воспользоваться информацией, извлекаемой из текста программы ассемблером. Например, в макросредствах нельзя использовать то, что после директивы
n EQU 10
имя N обозначает число 10, т. к. эта директива относится к "чистому" языку ассемблера и потому будет обработана только ассемблером. Из-за подобного рода ограничений приходится усложнять макроязык.
Во-вторых, макрогенератор и ассемблер могут действовать совместно, чередуя свою работу: первым каждое предложение программы просматривает макрогенератор; если это конструкция собственно макроязыка, то макрогенератор соответствующим образом преобразует ее в группу предложений "чистого" языка ассемблера и тут же передает их на обработку ассемблеру, а если это обычное предложение "чистого" языка ассемблера, то макрогенератор сразу передает его ассемблеру. В таких условиях в конструкциях макроязыка уже можно ссылаться на объекты (например, константы) "чистого" языка ассемблера.
При "чередующемся" способе взаимодействия макрогенератора и ассемблера они фактически являются не двумя независимыми трансляторами, а частями одного транслятора, который принято называть макроассемблером.
Именно такой макроассемблер используется в рассматриваемой нами системе МАSМ. Этим и объясняется полное название ее входного языка - язык макроассемблера (macroassembler language, МАSМ). Однако в дальнейшем мы по-прежнему будем называть его языком ассемблера (сокращенно - ЯА), используя термин "макроязык" для обозначения только набора макросредств, а термин "макрогенератор" для обозначения той части макроассемблера, что занимается обработкой этих макросредств. Кроме того, термином "окончательная программа" мы будем называть ту программу, которая получается после работы макрогенератора, которая затем переводится (собственно) ассемблером на машинный язык и выполняется.
