Ассемблер для Windows

Макроповторения



Макроповторения

1. Повторение, заданное опеделенное число раз. Используется макродиректива REPT. Например:

A EQU 10 REPT 100 DB A ENDM

Будет сгенерировано 100 директив DB 10. С этой директивой удобно использовать оператор "=", который позволяет изменять значение переменной многократно, т.е. использовать выражение типа А = А + 5.

2. Директива IRP.

IRP параметр,<список> ... ENDM

Блок будет вызываться столько раз, сколько параметров в списке. Например:

IRP REG, <EAX,EBX,ECX,EDX,ESI,EDI> PUSH REG ENDM

Приведет к генерации следующих строк:

PUSH EAX PUSH EBX PUSH ECX PUSH EDX PUSH ESI PUSH EDI

3. Директива IRPC.

IRPC параметр, строка Операторы ENDM

Пример:

IRPC CHAR,azklg CMP AL,'&CHAR&' JZ EndC ENDM EndC:

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

CMP AL,'a' JZ EndC CMP AL,'z' JZ EndC CMP AL,'k' JZ EndC CMP AL,'l' JZ EndC CMP AL,'g' JZ EndC EndC:

Амперсант (&) в последнем примере используется для того, чтобы задать вычисление параметра блока повторения даже внутри кавычек. Амперсант - это макрооперация, которая работает в блоке повторения, поскольку блоки повторения представляют собой один из типов макрокоманды.



Содержание раздела