Макросредства Ассемблера Макросредства языка ассемблера Понятие о макросредствах языка ассемблера Псевдооператоры equ и = Макрокоманды Макродирективы Директивы условной компиляции Любопытный читатель к этому занятию, вероятно, попытался самостоятельно написать хотя бы несколько программ на ассемблере.

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

Основной целью, которая при этом преследуется, является повышение удобства написания программ.

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

Что же делать программисту для решения его локальной задачи, для облегчения работы в определенной проблемной области?

Для этого разработчики компиляторов ассемблера включают в язык и постоянно совершенствуют аппарат макросредств. Этот аппарат является очень мощным и важным. В общем случае есть смысл говорить о том, что транслятор ассемблера состоит из двух частей — непосредственно транслятора, формирующего объектный модуль, и макроассемблера (рис. 1).

Соседние файлы в папке Text