B_1.gif (1135 bytes)

INICIO WEB

B_2.gif (1184 bytes)

            

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

        
  • condition: Una de las siguientes condiciones:

Una expresión absoluta = La expresión no debe contener referencias hacia delante o externas y cualquier valor que no sea cero es considerado como verdadero.

string1 = string2 = La condición es verdadera si la cadena1 y la cadena2 tienen la misma longitud y contenido.

string1 < > string2 = La condición es verdadera si la cadena1 y la cadena2 tienen distinta longitud o contenido.

            

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
          
                                         

B_1.gif (1135 bytes)

B_3.gif (1151 bytes)

B_2.gif (1184 bytes)