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
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
No se ... asegurate de guardar bien los cambios y ensamblar antes de volver a probar.
Cita de: Eternal Idol en 4 Marzo 2012, 10:44 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
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
No te ha funcionado porque seguramente tienes que imprimer el codigo ASCII.
Es decir:
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.
Cita de: _Enko en 7 Marzo 2012, 15:21 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