Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Лекция 8 / Введение

.doc
Скачиваний:
19
Добавлен:
10.06.2015
Размер:
26.11 Кб
Скачать

Введение

Язык ассемблера не относится к простым языкам программирования. По истечении некоторого времени после начала программирования на ассемблере становятся видны свойственные этому языку проблемы. Перечислим некоторые из них:

-плохая читаемость исходных текстов программы — спустя некоторое время при недостаточном комментировании могут возникнуть проблемы с пониманием особенностей алгоритма, лежащего в основе программы;

-ограниченность набора команд;

-полная или почти полная повторяемость некоторых фрагментов программы;

-необходимость включения в каждую новую программу одних и тех же фрагментов кода и т. д.

При написании программы на машинном языке данные проблемы были бы принципиально неразрешимы. Но язык ассемблера, являясь символическим представлением машинного языка, в то же время предоставляет ряд средств более высокого уровня для их решения. Основной целью, которая при этом преследуется, является повышение удобства написания программ. В общем случае эта цель достигается за счет:

-расширения набора директив;

-введения некоторых дополнительных команд, не имеющих аналогов в системе команд процессора;

-введения сложных типов данных.

Однако этот перечень исчерпывает все глобальные направления, по которым развивается транслятор от версии к версии. Что же делать программисту для решения его локальной задачи, для адаптации процесса разработки к нуждам определенной проблемной области? Для этого разработчики компиляторов ассемблера включают в язык и постоянно совершенствуют аппарат макросредств. Этот аппарат является очень мощным и важным. В общем случае есть смысл говорить о том, что транслятор ассемблера состоит из двух частей — непосредственно транслятора, формирующего объектный модуль, и макроассемблера. Если вызнакомы с языком С или C++, то, конечно, знаете используемый в нем механизм препроцессорной обработки. Основные принципы его работы аналогичны принципам работы макроассемблера. Для тех, кто ничего раньше не слышал об этом механизме, поясню его суть. Основная идея — использование подстановок, когда определенным образом организованная символьная последовательность заменяется другой символьной последовательностью. Создаваемая последовательность может описывать как данные, так и программные коды. Главное здесь то, что на входе макроассемблера текст программы может быть весьма далеким по виду от ассемблера, но на выходе обязательно будет текст на чистом ассемблере, содержащем символические аналоги машинных команд процессора. Таким образом, обработка программы на ассемблере с использованием макросредств неявно осуществляется транслятором в две фазы. На первой фазе работает часть компилятора, называемая макроассемблером, основные функции которого мы описали ранее.

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

Далее мы обсудим основной набор макросредств компилятора TASM. Отметим, что большинство этих средств доступно и в компиляторе MASM фирмы Microsoft. Обсуждение начнем с простейших средств и закончим более сложными.

Соседние файлы в папке Лекция 8