1

div に少し問題があります。この問題について助けが必要です。TASM でアプリケーションを持っています。一連の数字で 3 の倍数を見つけなければなりません。問題は、div を実行するとプログラムがフリーズしてしまうことです。理由がわかりません。

私のコードは次のとおりです。

.model small
.stack 1000h
.data

msj1 db 13,10,'Tirame un numero: ','$'
msj2 db 13,10,'ES MULTIPLO DE 3 : ','$'
msj3 db 13,10,'NO ES MULTIPLO DE 3 : ','$'
var1 db ?
cont db 0

.code
.startup

call limpia
mov ah,09h
lea dx, msj1 ;desplegar numero 1:
int 21h

call leer ;lee primer numero
sub al,30h ;restar 30h para obtener el numero
mov var1,al ;lo guardo en var1
mov ah,09h

mov cl,al
mov cont,1

 ciclo:  
            ;push cont
            mov al ,cont
            mov bl,3
            div bl ;this is where the prog freezes , if you comment this line the prog runs

            cmp ah,'0'          
            je multiplo
            jne nomult   

            multiplo :
                mov ah,09h
                lea dx, msj2 ;desplegar numero 2:
                int 21h

                mov dl,cont ;mover al a dl para imprimir
                add dl,30h ;sumar 30 para obtener caracter
                mov ah,02h ;imprimir caracter
                int 21h
                inc cont

            nomult:
                mov ah,09h
                lea dx, msj3 ;desplegar numero 2:
                int 21h     

                mov dl,cont ;mover al a dl para imprimir
                add dl,30h ;sumar 30 para obtener caracter
                mov ah,02h ;imprimir caracter
                int 21h     
                inc cont    

loop ciclo
.exit

limpia proc near
mov ah,00h
mov al,03h
int 10h
ret
limpia endp

leer proc near
mov ah,01h;leer caracter desde el teclado
int 21h;lee primer caracter
ret
leer endp
end
4

2 に答える 2