Как написать игру для ZX Spectrum на ассемблере


         

в макросах можно определять не


Мы уже говорили, что в макросах можно определять не только строго совпадающие фрагменты исходного текста, но и слегка отличающиеся друг от друга. Это становится реальным благодаря возможности использования так называемых формальных параметров. Для каждого макроса допускается задавать до 16 таких параметров. Например, при рисовании точек на экране нужно указывать две координаты. Можно написать макрос, в котором регистры B и C будут загружаться требуемыми значениями и который вызывается командой

PLOT X,Y

где X и Y - любые допустимые в одноименном операторе Бейсика значения координат. Формальные параметры в макроопределении задаются знаком равенства (=) и символом, код которого соответствует порядковому номеру фактического параметра в макрокоманде. Для первого параметра этот символ может иметь коды 0, 16, 32, 48 и так далее, второй параметр будут описывать любые символы с кодами 1, 17, 33, 49... Чтобы не запутаться, рекомендуем использовать цифровые символы от 0 до 9 для определения первых десяти параметров, а остальные 6 можно задавать, например, буквами K, L, M, N, O и P. Тогда макрос PLOT будет записан следующим образом:

PLOT MAC LD C,=0 LD B,=1 CALL 8933 ENDM

После трансляции вышеприведенной макрокоманды PLOT с параметрами 100 для координаты X и 80 для Y получится следующая последовательность команд микропроцессора:

LD C,100 LD B,80 CALL 8933

то есть формальные параметры =0 и =1 заменятся фактическими 100 и 80 соответственно.

При написании макрокоманд нужно помнить, что если имя макроса состоит из пяти символов (напомним еще раз, что это максимальная длина имен макросов), то фактические параметры обязательно нужно заключать в круглые скобки, например:

PRINT (TEXT)

Прежде чем привести пример использования макросов в реальной программе, добавим, что в качестве параметров могут выступать только непосредственные числовые значения. Использование символьных строк (за исключением имен меток и констант) не разрешается.


Содержание  Назад  Вперед