Читать «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, по которой, напомним, содержимое указанного файла вставляется в текст программы, причем вставка делается до перевода программы на машинный язык.
Этот способ объединения модулей является основным для небольших программ, с небольшим числом модулей. Но если в программе много модулей, то у этого способа проявляется недостаток, суть которого в следующем: если программа разделена на несколько модулей и в одном из них обнаружена ошибка, то После ее исправления мы вынуждены будем оттранслировать заново всю программу, все ее модули. Это и плохо: изменили только один модуль, Перетранслировать приходится и все остальные модули, что ведет к большим