• Sábado 30 de Marzo de 2024, 00:54

Autor Tema:  [problema] division en TASM  (Leído 2518 veces)

Samus428

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
[problema] division en TASM
« en: Sábado 27 de Abril de 2013, 22:56 »
0
buenas , tengo un problemita con una división ojala me puedan dar una mano con este problema , llevo varios días sin poder dar solución , tengo una aplicación en TASM  q debe hallar el multiplo de 3 en una serie de números , el problema radica es que cunado hago la división el programa se me paraliza y no tengo la mas mínima idea porque , aquí dejo el código por si alguien me puede dar una mano , Gracias

Código: ASM
  1.  
  2. .model small
  3. .stack 1000h
  4. .data
  5.  
  6. positivos db '                                   $'
  7. negativos db '                                   $'
  8.  
  9. msj1 db 13,10,'Tirame un numero: ','$'
  10. msj2 db 13,10,'ES MULTIPLO DE 3 : ','$'
  11. msj3 db 13,10,'NO ES MULTIPLO DE 3 : ','$'
  12. var1 db ?
  13. cont db 0
  14.  
  15.  
  16. .code
  17. .startup
  18.  
  19. call limpia
  20. mov ah,09h
  21. lea dx, msj1 ;desplegar numero 1:
  22. int 21h
  23.  
  24. call leer ;lee primer numero
  25. sub al,30h ;restar 30h para obtener el numero
  26. mov var1,al ;lo guardo en var1
  27. mov ah,09h
  28.  
  29. mov cl,al
  30. mov cont,1
  31.  
  32.  ciclo:  
  33.                         ;push cont
  34.                         mov al ,cont
  35.                         mov bl,3
  36.                         div bl ; aqui es donde me pone problemas , si comento esta linea el programa corre
  37.                
  38.                
  39.                         cmp ah,'0'
  40.                        
  41.                         je multiplo
  42.                         jne nomult             
  43.  
  44.  
  45.                         multiplo :
  46.                                 mov ah,09h
  47.                                 lea dx, msj2 ;desplegar numero 2:
  48.                                 int 21h
  49.                                
  50.                                 mov dl,cont ;mover al a dl para imprimir
  51.                                 add dl,30h ;sumar 30 para obtener caracter
  52.                                 mov ah,02h ;imprimir caracter
  53.                                 int 21h
  54.                                 inc cont
  55.                                
  56.                         nomult:
  57.                                 mov ah,09h
  58.                                 lea dx, msj3 ;desplegar numero 2:
  59.                                 int 21h        
  60.  
  61.                                 mov dl,cont ;mover al a dl para imprimir
  62.                                 add dl,30h ;sumar 30 para obtener caracter
  63.                                 mov ah,02h ;imprimir caracter
  64.                                 int 21h        
  65.                                 inc cont                               
  66.         ;pop c
  67.                
  68. loop ciclo
  69.  
  70.  
  71. .exit
  72.  
  73. limpia proc near
  74. mov ah,00h
  75. mov al,03h
  76. int 10h
  77. ret
  78. limpia endp
  79.  
  80. leer proc near
  81. mov ah,01h;leer caracter desde el teclado
  82. int 21h;lee primer caracter
  83. ret
  84. leer endp
  85.  
  86. end
  87.  
  88.  


cualquier ayuda se agradece !
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.