DIRECTIVAS DE ENSAMBLADO CONDICIONAL |
Estas directivas proporcionan el control lógico sobre el ensamblado selectivo del código fuente. |
Estas directivas son las siguientes: IF, ELSE, ELSEIF y ENDIF. |
Sintaxis |
IF condition |
ELSE |
ELSEIF condition |
ENDIF |
Parámetros |
|
Descripción |
Utilice las directivas IF, ELSE y ENDIF para controlar el proceso de ensamblado en el tiempo de ensamblado. Si la condición que sigue a la directiva IF no es verdadera, las siguientes instrucciones no generarán ningún código hasta que se encuentre alguna directiva ELSE o ENDIF. |
Utilice ELSEIF para introducir una nueva condición después de la directiva IF. Las directivas de ensamblador condicionales pueden usarse en cualquier sitio en el ensamblado, pero tienen su mayor uso en conjunción con los procesos de macros. |
Todas las directivas de ensamblador (excepto END) así como la inclusión de archivos puede ser deshabilitada por las directivas condicionales. Cada directiva IF debe acabar con una directiva ENDIF. La directiva ELSE es opcional, y si se usa, debe estar en un bloque IF ... ENDIF. Los bloques IF ... ENDIF e IF ... ELSE ... ENDIF pueden estar anidados a cualquier nivel. |
Ejemplos La siguiente macro resta una constante del par de registros R25:R24. |
subW MACRO c |
IF c<64 |
SBIW R25:R24, c |
ELSE |
SUBI R24, LOW(c) |
SBCI R25, c >> 8 |
ENDIF |
ENDM |
Si el argumento de la macro es menor que 64, es posible usar la instrucción SBIW para salvar dos bytes de memoria de código. Se puede hacer un test con el siguiente programa: |
main LDI R24, 0 |
LDI R25, 0 |
subW 16 |
LDI R24, 0 |
LDI R25, 0 |
subW 75 |
RET |
END |