Язык ассемблера содержит довольно мощные средства поддержки модульного подхода в рамках структурного программирования. В языке ассемблера эта тех- нология поддерживается в основном с помощью механизма процедур и, час- тично, механизма макроподстановок. Л Гибкость интерфейса между процедурами достигается за счет разнообразия вариантов передачи аргументов в процедуру и возвращения результатов. Для этого могут использоваться регистры, общие области памяти, стек, директивы EXTRN и PUBLIC. и Компилятор MASM имеет мощное средство для работы с процедурами в виде директив PROTO и INVOKE. Их использование существенно облегчает вызов про- цедур и передачу в них параметров. Сочетание возможностей этих директив с возможностями директивы PROC позволяет организовывать корректный и бо- лее надежный вызов процедур, перекладывая заботу о формировании кодов пролога и эпилога на транслятор. 9. Средства TASM поддерживают связи между языками. Ключевой момент при этом — организация обмена данными. Обмен данными между процедурами на языках высокого уровня и ассемблера производится через стек. Для доступа к аргументам используются регистр ВР или (что более удобно) директива ARG. ш Можно доверить компилятору самому формировать коды пролога и эпилога, указав язык в директиве MODEL. Кроме того, указание языка позволяет задей- ствовать символические имена аргументов, переданных процедуре в стеке, вме- сто прямого использования регистра ВР для доступа к ним. Тем самым повыша- ются мобильность разрабатываемых программ и устойчивость их к ошибкам. * Для возвращения результата в программу на языке высокого уровня необходи- мо использовать конкретные регистры. Через них можно передать как сами дан- ные, так и указатели. и Довольно эффективным для организации связи С—ассемблер может быть под- ход, при котором ассемблерный код оформляется в виде функций библиотек DLL.