Autor Tema: suma hexadecimal  (Leído 2232 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pipotve

  • PIC10
  • *
  • Mensajes: 4
suma hexadecimal
« en: 19 de Junio de 2004, 13:30:00 »
hola todos soy nuevo !!!

bueno mi primera pregunta en este foro es que quiero hacer la suma de dos numeros hexadecimales aki pego el codigo poara que lo vean y asi me pueden decir algo que les pregunto al final::


 list p=16f84

contador3     EQU   0x5c
contador1     EQU   0x6c
contador2     EQU   0x7c
pata2         EQU   0x06
trisb         EQU   0x86
estado        EQU   0x03                
 

                 org   0



             bsf    estado,5 ;    colocar las
             movlw  0x00     ;   patas del
             movwf  trisb    ;    puerto B
             bcf    estado,5 ;   como salida
           


            movlw    0x97
            movwf    contador1
            movlw    0x79
            addwf    contador1


           

                btfss    estado,2
                  goto     primero
                goto     segundo
 
primero     btfss    estado,1; verifica DC a ver si esta en 1
                 goto     segundo ;  no esta en 1
                movlw    0x06    ;  esta en 1
                  addwf    contador1; suma 6 si DC esta en 1
                 movwf    pata2
                  goto     segundo  ; verifica ahora el otro


segundo     btfss    estado,0
                   call      start2
                    movlw    0x60
                  addwf    contador1
       
start2       decfsz contador3,1
             call   start2





            end

      Ok mi pregunta es la siguiente por que  cuando hago la suma de 7 y 9 si se guarda en la memoria un 10 que luego con el carry lo coloco 6 mas, para que me de 16 pero cuando hago que sume solo 90 y 70 eso me tiene que dar 100 pero en la memoria me coloca 0x00 luego hago la suma y me sale 60 ?

Yo creo que es porque no caben en la memoria 100 hexadecimal pero no estoy seguro ... bueno espero que me ayuden

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: suma hexadecimal
« Respuesta #1 en: 19 de Junio de 2004, 15:14:00 »
7+9 en hexadecimal es 10, que en decimal es 16

0 1 2 3 4 5 6 7 8 9 A B C D E F

ESTOS SON LOS VALORES CON LOS QUE TRABAJA EL CÓDIGO HEXADECOMAL....

90 + 70 ES 100 EN HEXADECIMAL PERO EN DECIMAL ES 256... POR LO QUE SOBREPASAS EL BYTE...
POR LO TANTO SE PONE A 0 QUE ES EL SIGUIENTE VALOR.
255 + 1 = 0
y el accareo daría la opción de incrementar el segundo byte para presentar el valor que necesitas

100h = 100000000b
como verás son 9 bits
para trabajar con el 100h, tendrías que trabajar con 2 bytes...

si no te he resuelto la duda, la proxima vez me explico mejor...
y te recomiendo que centres tu mente en un solo sistema numérico
decimal, hexadecimal, binario....
pero no los mezcles, porque te llevarás mas de un disgusto...


Desconectado pipotve

  • PIC10
  • *
  • Mensajes: 4
RE: suma hexadecimal
« Respuesta #2 en: 19 de Junio de 2004, 16:34:00 »
ok entendi muy bien gracias

tu dices que estoy confundiendo "hex" con "dec " no es eso,  lo que pasa es que hago la suma en hexadecimal y luego paso a decimal que si vez, se le suman 6 o 60 que depende de quien se vea afectado si DC o C para que pasen a se decimal los nuemeros por eso es que meto todo

Desconectado Abago

  • PIC24F
  • *****
  • Mensajes: 792
RE: suma hexadecimal
« Respuesta #3 en: 20 de Junio de 2004, 08:42:00 »
No me refiero a que confundas los sistemas, sino a que los mezclas... para obtener resultados... Cosa que yo tambien hago, pero con mucho cuidado porque como ya comenté antes, nos ahorraremos muchos disgustos.

Desconectado pipotve

  • PIC10
  • *
  • Mensajes: 4
RE: suma hexadecimal
« Respuesta #4 en: 20 de Junio de 2004, 12:05:00 »
okas ya entendi