Читать «Assembler. Программирование на языке ассемблера IBM PC» онлайн - страница 151

Unknown Author

DEF MACRO X,V

IFB <V>    ;; параметр V не задан (пустой) ?

X DB ?

ELSE X DB V END IF ENDM

описывает макрос DEF X,N, по которому определяется байтовая переменная X с начальным значением V, если оно указано, или без него:

DEF А, 6 -> A DB 6

DEF В -> В DB ?

Помимо рассмотренных здесь IF-директив имеются и другие IF-д ирективы. но на практике они используются не очень часто, поэтому будут описаны в гл. 14, где собраны редко встречающиеся конструкции ЯА.

МНОГОМОДУЛЬНЫЕ ПРОГРАММЫ

Хорошо известен следующий прием, упрощающий составление больших программ: если решаемая задача сложна и сразу написать программу ее решения трудно, тогда следует разделить задачу на несколько более простых подзадач, для каждой из них написать соответствующую часть программы, а затем объединить ути части в единую программу:

подзадача-1-> модуль-1

задач а    •••    •••    программа

зЪподзадача-к-> модуль- к>*

Термином "модуль” принято называть часть программы, решающую некоторую подзадачу и более или менее независимую от других частей.

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

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

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

модуль-1    _____

•••    программа —> | транслятор | маш. программа

модуль-

Именно этот вариант обычно подразумевается при использовании процедур: процедуры и основную часть программы мы можем составлять и по отдельности, но затем мы их объединяем вместе и только после этого транслируем программу. Аналойный способ объединения дает и применение директивы INCLUDE, по которой, напомним, содержимое указанного файла вставляется в текст программы, причем вставка делается до перевода программы на машинный язык.

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