Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: lexoazul en 4 Marzo 2012, 04:36 am



Título: TASM Suma de numeros
Publicado por: lexoazul en 4 Marzo 2012, 04:36 am
Hola a todos tengo un problema con este codigo, resulta que capturo dos numeros del 0 al 9 y lo sumo, para luego mostrar el resultado.
El problema que tengo es que si el resultado de la suma es de dos dijitos solo me muestra el primero ejemplo:
si sumo 4 + 9 = 13
del resultado solo me muestra el 3
Nota: si el resultado de la suma es de un dijito lo muestra bien; ejemplo 3 + 3 = 6

agradezco mucho su atencion y de antemano Gracias a todos.
Les dejo aqui el codigo, por cierto el ensamblador que estoy utilizando es TASM

Código:

pila segment stack "stack"
    dw 64h dup(?)
pila ends
data segment
    var db "ingrese numero",13,10,"$"
    resul db 0
data ends
code segment
        assume cs:code, ds:data, ss:pila
    inicio:
        mov ax,data
        mov ds,ax
        mov cl,0
        jmp mostrar
    datos:
        cmp cl,2
        je formato
        mov ah,01h
        int 21h
        sub al,30h
        add resul,al
        inc cl
        jmp mostrar
    formato:
        mov ah,02h
        mov dl,10
        int 21h
        
        mov ah,02h
        mov dl,13
        int 21h
        jmp imprimir
    imprimir:
        mov ah,0
        mov al,resul
        mov cl,10
        div cl
        
        ;add al,30h
        ;add ah,30h
        mov bl,ah
        
        mov dl,al
        add dl,30h
        mov ah,02h ;IMPRIME DECENA
        int 21
        
        mov dl,bl
        add dl,30h
        mov ah,02h ;IMPRIME UNIDAD
        int 21h
        jmp fin
        
    mostrar:
        mov ah,09h
        mov dx, offset var
        int 21h
        jmp datos
    fin:
        mov ax,4c00h
        int 21h
code ends
end inicio
end datos
end formato
end imprimir
end mostrar
end fin


EI: juntando mensajes.

bueno de tanto checar el codigo no habia algun error; pero para que me funcionara tube que volver a copiar la parte de la etiqueta imprimir y ya funciono.
Nota: son varias veces que pasa que cuando escribo codigo no funciona pero si lo vuelvo a reescribir entonces ya funciona alguien tiene alguna idea porque????

Bueno gracias a todos y Saludos


Título: Re: TASM Suma de numeros
Publicado por: Eternal Idol en 4 Marzo 2012, 10:44 am
No se ... asegurate de guardar bien los cambios y ensamblar antes de volver a probar.


Título: Re: TASM Suma de numeros
Publicado por: lexoazul en 6 Marzo 2012, 03:17 am
No se ... asegurate de guardar bien los cambios y ensamblar antes de volver a probar.

OK gracias Eternal Idol lo tendre muy encuenta
Ahora tengo un problema tratando del mismo tema de sumas de numeros resulta que quiero imprimir el resulttado de tres dijitos de una ssuma.
ejemplo:
55 + 175 + 112 = 342

bueno en este codigo no he realizado la suma solo estoy probando mostrar el resultado es decir el numero 342 pero me muestra 3R.

segui el mismo concepto de ir dividiendo entre 100,10 para ir mostrarndo cada caracter pero no funciona si alguien me pudiera decir que esta mal se lo agradeceria mucho.

SAludos y gracias a todos

Código:
pila segment stack "stack"
pila ends
data segment
    var dw 342
    ;var2 dw ?
data ends
code segment
        assume cs:code, ds:data, ss:pila
    inicio:
        mov ax,data
        mov ds,ax
       
        mov dx,0
        mov dx,var
        mov ax,var
        mov cl,100
        div cl
        mov bx,dx
       
        mov dl,al
        add dl,30h ;CENTENA
        mov ah,02h
        int 21h
        ;---------------------
       
        mov dx,0
        mov dx,bx
        mov ax,bx
        mov cl,10
        div cl
        mov bx,dx
       
        mov dl,al
        add dl,30h ;Decena
        mov ah,02h
        int 21h
        ;-----------------------------

        mov dl,bl
        add dl,30h
        mov ah,02h
        int 21
       
       
    fin:
        mov ax,4c00h
        int 21h
code ends
end inicio



Título: Re: TASM Suma de numeros
Publicado por: _Enko en 7 Marzo 2012, 15:21 pm
No te ha funcionado porque seguramente tienes que imprimer el codigo ASCII.
Es decir:
Código:
0 <> '0'
http://www.asciitable.com/

El valor ascci de 0 es 48, 1 es 49, 2 es 50 etc... hasta que 9 es 58

Saludos.


Título: Re: TASM Suma de numeros
Publicado por: lexoazul en 12 Marzo 2012, 14:03 pm
No te ha funcionado porque seguramente tienes que imprimer el codigo ASCII.

Muchas gracias _Enko Tienes razon hay que tomar en cuenta el codigo ASCII, de hecho si lo tomo encuenta y antes de mandar a mostrar el caracter le sumo los 30H ó 48 Decimal, para que me muestre el codigo correspondiente al numero que tengo guardado despues de la divicion(entre 100,10).
pero volvere a hechar un vistazo al codigo.

De antemano Muchas gracias a todos por contestar