Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Блоки повторения





Иногда в некотором месте программы приходится выписывать несколько раз подряд один и тот же (или почти один и тот же) фрагмент, и хотелось бы, чтобы мы сами выписывали этот фрагмент только раз, а макрогенератор размножал его нужное число раз. Такая возможность предусмотрена в ЯА, и реализуется она с помощью блоков повторения (reрeat blocks).

Блок повторения имеет следующую структуру:

<заголовок>

<тело>

ENDM

Здесь <тело> - любое число любых предложений (в частности,ими могут быть снова блоки повторения), а ENDM – директива, указывающая на конец тела и всего блока повторений. Встречая в исходном тексте программы такой блок, макрогенератор подставляет вместо него в окончательную программу несколько копий тела. При дублировании тело может выписываться без каких-либо изменений, а может копироваться и с модификациями. Как именно происходит дублирование, сколько копий создается – все это зависит от заголовка блока. Имеется три раз­новидности заголовка, в связи с чем различают три варианта блока повторения:

REPT -блоки, IRP -блоки и IRPC -блоки.

REPT-блоки

Этот тип блоков повторения записывается следующим образом:

REPT k

<ТЕЛО>

ENDM

 

Здесь k - константное выражение с неотрицательным значением. Это выражение должно быть таким, чтобы можно было вычислить его сразу (например, в нем не должно быть ссылок вперед). Вычислив значение k, макрогенератор создает k точных копий тела блока и подставляет их в окон­чательный текст программы. Например, по блоку

rерт 3

SНR АХ,1

ENDM

будет построен следующий фрагмент окончательной программы:

SНR АХ,1

SНR АХ,1

SНR АХ,1

Другой пример (слева указан фрагмент исходной программы, построенный по нему фрагмент окончательной программы):

N EQU 6 N EQU 6

REPT N-4 DB 0,1

DB 0,1 à DW?

DW? DB 0,1

ENDM DW?

Отметим, что в блоках повторения довольно часто используется директива присваивания (=). Например, описать 100-байтовый массив X, элементы которого имеют начальные значения от 0 до 99, можно так (справа указан текст окончательной программы, который фактически эквивалентен директиве X DB 0,1,2,3,...,99):

X DB 0 X DB 0

K=0 K=0

REPT 99 K=K+1

K=K+1 à DB K 99 таких пар

DB K K=K+1

ENDM DB K

...

Date: 2015-10-21; view: 423; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию