Restar 2 Numero s de 16 Bits

download Restar 2 Numero s de 16 Bits

If you can't read please download the document

description

Asm Restar 2 numeros de 16 bits

Transcript of Restar 2 Numero s de 16 Bits

;********************************************************************; MICROCONTROLADORES; Nombre: Edison Naranjo; Curso: Sexto " B" DEE;********************************************************************;********************************************************************; Ejercicio 1.- Resta de 2 nmeros de 16 bits; EBEB - 1111 = DADA; Los nmeros se encuentran cargados en el PIC;********************************************************************LIST P=16F877AINCLUDE "P16F877A.INC"__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCDATOA_H EQU 0X20 ; Parte ms significativa del nmero ADATOA_L EQU 0X21 ; ParteDATOB_H EQU 0X22 ; Parte ms significativa del nmero BDATOB_L EQU 0X23 ; Parte menos significativa del nmero BRESULTADO_H EQU 0X24RESULTADO_L EQU 0X25COMP1_H EQU 0X28 ; Parte ms significativa B'COMP1_L EQU 0X29 ; Parte menos significativa B'ORG 0X00BSF STATUS,RP0BCF STATUS,RP1movlw 0x00 ; Configuracin del puerto B como salidamovwf TRISBmovlw 0x00 ; Configuracin del puerto C como salidamovwf TRISCBCF STATUS,RP0INICIOmovlw 0X11movwf DATOB_L; DATOB_L=0X11movlw 0X11movwf DATOB_H; DATOB_H=0X11call COMP1 ; Llamada a la subruitina COMP1movlw 0XEBmovwf DATOA_L ; DATOA_L=0XEBmovlw 0XEBmovwf DATOA_H ; DATOA_H=0X11call RESTA_L ; Llamada a la subrutina RESTA_Lbtfss STATUS,Ccall RESTA_H1 ;C=0 llama a RESTA_H1call RESTA_H2 ;C=1 llama a RESTA_H2btfss STATUS,Ccall CAMBIO ;C=0 llama a CAMBIOcall MAS ;C=0 llama a MASmovf RESULTADO_L,0movwf PORTBmovf RESULTADO_H,0movwf PORTCgoto INICIOCOMP1comf DATOB_L,0 ; complemento a 1 de DATOB_Lmovwf COMP1_Lcomf DATOB_H,0 ; complemento a 1 de DATOB_Hmovwf COMP1_HreturnRESTA_Lmovf DATOA_L,0addwf COMP1_L,0 ; W=DATOA_L + COMP1_lmovwf RESULTADO_LreturnRESTA_H1movf DATOA_H,0addwf COMP1_H,0 ; W=DATOA_H + COMP1_Hmovwf RESULTADO_HreturnRESTA_H2movf DATOA_H,0addlw 0X01addwf COMP1_H,0 ; W=DATOA_H + COMP1_H + 1movwf RESULTADO_HreturnMAS; En esta subrutina, si existe carry al sumar el numero A; con el complemento a 1 del nmero B, este se debesumarse; al resultado finalmovf RESULTADO_L,0addlw 0X01movwf RESULTADO_Lbtfsc STATUS,Cmovlw 0X01movlw 0X00addwf RESULTADO_H,1returnCAMBIO; En esta subrutina, si no hay carry al sumar el numero A; con el complemento a 1 del nmero B, se debe efectuar el; complemento a 1 del resultado finalcomf RESULTADO_L,1comf RESULTADO_H,1returnend