sábado, 10 de agosto de 2013

Instrucciones de suma y flags del registro STATUS

La suma se realiza en aritmética binaria y afecta a los flags(banderas) del registro STATUS de la siguiente forma:

Flag de Zero

Flag Z (zero): 



  • El bit Z se fija a "1" si el resultado de la operación es "0"
  • El bit Z se fija a "0" si el resultado de la operación es diferente de "0" 


Flag de acarreo en el octavo bit

Flag C (carry):



  • Se fija a "1" si el bit 7 tiene un acarreo ejemplo: Si el resultado fuera mayor que B'11111111' (255 Decimal o FF Hexadecimal).
  • En caso contrario se fija a "0".


Flag de acarreo en el 4to bit de menos peso

Flag DC (Digit Carry)


  • Se fija a "1" si en nibble menos significativo (bits del 0 a 3) resulta mayor que 15
  • Se fija a "0" si sucede lo contrario

     

Ejercicio 04 Suma y revisión de Flags del Registro STATUS

En el siguiente programa se sugiere cambiar los datos para corroborar los estados es los flags en sus diferentes casos.

;***************INSTRUCCIONES DE SUMA**************

;ZONA DE DATOS*********************************************************************
    __CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC ;CONFIGURACION PALABRA DE CONTROL

            LIST P=16F84A   ;MICROCONTROLADOR UTILIZADO
            INCLUDE <P16F84A.INC>   ;ETIQUETAS DEL MICROCONTROLADOR ESPECIFICADO



;ZONA DE CODIGOS*********************************************************************

            ORG 0           ;INCIO DE PROGRAMA EN LA DIRECCION 0 DE MEMORIA DE PROGRAMA

INICIO
            BSF STATUS,RP0  ;FIJA A 1 EL BIT 5 DEL REGISTRO STATUS PARA ACCESAR AL BANCO 1
            CLRF TRISB      ;LIMPIA LAS LINES DEL PTO B PARA CONFIGURARLO COMO SALIDA
            MOVLW B'00011111'
            MOVWF TRISA     ;CARGAMOS EL CONTENIDO DEL REGISTRO DE TRABAJO W A TRIS A PARA CONFIGURARLO COMO ENTRADA
            BCF STATUS,RP0  ;FIJA A 0 EL BIT 5 DEL REGISTRO STATUS PARA REGRESAR AL BANCO 0
PRINCIPAL
            MOVLW H'A3'     ;CARGAMOS AL REGISTRO W CON EL DATO A3
            ADDLW H'4F'     ;SUMAMOS EL CONTENIDO DEL REGISTRO W CON EL DATO 4F
            MOVWF PORTB     ;EL VALOR DEL REGISTRO W SE MUEVE AL PUERTO B Y ARROJA EL RESULTADO EN ESTE CASO EL DATO F2
            SLEEP           ;EL PROGRAMA ENTRA EN MODO BAJO CONSUMO DEL CUAL NO PODRA SALIR

            END