viernes, 6 de septiembre de 2013

Instrucciones de resta


La resta se realiza sumando, en binario puro sin signo.
Al realizar la resta de 8 bits con signo el resultado no puede exceder de +127 ni de (-128).

El flag carry indica si es positivo (C se pone a "1") o negativo (C se pone a "0").

Pueden ocurrir tres casos:


  • Si el el resultado es positivo distinto de cero, C = 1 y Z = 0.
  • Si el resultado es cero, C = 1 y Z = 1.
  • Si el resultado es negativo, C = 0 y Z = 0.
Para las instrucciones de resta podemos emplear:

sublw k
subwf f,d


            ;***************INSTRUCCIONES DE RESTA**************

;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

RESTA EQU H'0C'

;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'00000000'
            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'04'     ;CARGAMOS AL REGISTRO W CON EL DATO A3
            MOVWF RESTA
            MOVLW H'01'
            SUBWF RESTA,W   ;RESTAMOS AL RESGISTRO RESTA LO QUE CONTIENE EL REGISTRO W 
            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





No hay comentarios.:

Publicar un comentario