Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Блоки повторений
Блок повторения представляет собой специфическую форму макроопределения с несколько ограниченными возможностями макроязыка. По сути блок повторения представляет собой макрообъект, объединяющий в себе макроопределение и макровызов. Макроопределения как шаблона, по которому производится генерация макрорасширения, здесь не требуется, в результате чего сужаются возможности варьирования генерируемым текстом. С другой стороны, использование блоков повторения по сравнению с макроопределениями является синтаксически и логически более простой задачей. Обработка блока повторения заключается в многократном дублировании тела блока с незначительными изменениями текста. В языке Ассемблера имеются блоки повторения 3-х типов: u REPT -блок; u IRP -блок; u IRPC -блок. REPT -блок имеет следующий формат: REPT выражение ... предложения ... ENDM Блок предложений, заключенный между ключевыми словами REPT и ENDM, повторяется столько раз, каково текущее значение указанного выражения. Выражение должно иметь значение в виде 16-битового числа без знака и не может содержать внешних или неопределенных символов. Тело блока может включать в себя любые предложения языка. IRP -блок имеет следующий формат: IPR формальный-параметр,<параметр,...> ... предложения ... ENDM Блок предложений, стоящий между ключевыми словами IRP и ENDM, будет повторен для каждого параметра в списке, заключенном в скобках <>. Формальный-параметр относится только к данному блоку и последовательно принимает значения из списка. В качестве параметров в списке могут быть заданы определенные символы, строки, числа или символьные константы. Может быть задано любое число параметров, которые, если их несколько, должны разделяться запятыми. Тело блока может включать в себя любые предложения языка Ассемблера. Формальный-параметр в теле блока может быть использован произвольное число раз. Когда MASM распознает директиву IRP, он создает копию предложений блока для каждого параметра в списке. При копировании предложений осуществляется замена текущим параметром всех вхождений формального параметра блока. Если в списке будет обнаружен пустой параметр (<>), формальный параметр получит значение пустой строки. Если список параметров пуст, блок игнорируется. Пример: alloc MACRO x IRP y,<x> DB y ENDM ENDM В результате обработки макровызова alloc <0,1,2,3> будет сгенерировано макрорасширение IRP y,<0,1,2,3> DB y ENDM IRPC -блок имеет следующий формат: IRPC формальный-параметр,строка ... предложения ... ENDM Блок предложений, заключенный между ключевыми словами IRPC и ENDM, будет повторен для каждого символа указанной строки. При этом каждое вхождение формального параметра в блоке замещается текущим символом строки. Строка представляет собой любую комбинацию букв, цифр и других символов. Если строка содержит пробелы, запятые или другие ограничители, она должна быть заключена в одинарные скобки <>. Тело блока может включать в себя любые предложения языка Ассемблера. Формальный параметр в теле блока может быть использован произвольное число раз. Когда MASM распознает директиву IRPC, он создает копию предложений блока для каждого символа в строке. При копировании предложений осуществляется замена текущим символом строки всех вхождений формального параметра блока.
Date: 2015-05-22; view: 567; Нарушение авторских прав |