SoloCodigo
		Programación Específica => Microcontroladores => Microcontroladores MOTOROLA => Mensaje iniciado por: wzero en Domingo 28 de Octubre de 2007, 17:21
		
			
			- 
				Hola a todos, este es mi primer post espero que no sea el ultimo.
 Bien yo estoy empezando con los microcontroladores y aun no lo pillo del todo.
 
 Tengo que hacer dos programas.
 El micro es el de la familia HCS08 en concreto el MC9S08QG8 <<- de 8bis
 
 Problema1.- Que sume dos numeros de 16 Bits, dixos numeros estan almacenados en las direcciones $0100,$0101 y $0102,$0103 suponiendo que k primero se alamacena la parte alta y luego la baja.
 El resultado se debe almacenar en la $0103 y 0104$.
 
 mi solucion es esta.
 
 ;Datos en RAM
 org $0100
 dc.b $1D,$C9,$22,$A8  ;Numeros
 
 N1_H    equ $0100
 N1_L    equ $0101
 N2_H    equ $0102
 N2_L    equ $0103
 Resul_H equ $0104
 Resul_L equ $0105
 
 
 ;Programa principal
 org $E000
 
 main:  lda N1_L         ;Lee parte baja de N1
 adc N2_L         ;Suma parte baja de N2
 sta Resul_L      ;Guarda resultad parte baja
 
 
 lda N1_H            ;Lee parte alta de N1
 BLO SumaConCarry    ;si carry=1 entonces salta
 add N2_H
 sta Resul_H
 
 SumaConCarry     add N2_H
 inca
 sta Resul_H
 
 
 bucle  bra bucle ;bucle infinito
 
 ;vector de Reset
 org $FFFE
 dc.w $E000
 
 
 Problema 2
 
 Suma 3 numeros  de 8bits alamacenados en las direcciones $0100,$0101,$0102. El resultado sera un numero de 16 bits que guardaremos en $0103,$0104.
 
 mi casi solucion:
 
 ;Ejemplo que suma dos Numeros de 16 bits
 
 ;Datos en RAM
 org $0100
 dc.b $1D,$C9,$22,$A8  ;Numeros
 
 N1_H    equ $0100
 N1_L    equ $0101
 N2_H    equ $0102
 N2_L    equ $0103
 Resul_H equ $0104
 Resul_L equ $0105
 
 
 ;Programa principal
 org $E000
 
 main:  lda N1_L         ;Lee parte baja de N1
 adc N2_L         ;Suma parte baja de N2
 sta Resul_L      ;Guarda resultad parte baja
 
 
 lda N1_H            ;Lee parte alta de N1
 BLO SumaConCarry    ;si carry=1 entonces salta
 add N2_H
 sta Resul_H
 
 SumaConCarry     add N2_H
 inca
 sta Resul_H
 
 
 bucle  bra bucle ;bucle infinito
 
 ;vector de Reset
 org $FFFE
 dc.w $E000
 ;****************************
 
 La dificultad que tengo es que no se como almacenar el CARRY de las sumas .
 Supongo que para alguien con experiencia le sera facil.
 Gracias