Ensamblador - ayuda en ensamblador

 
Vista:

ayuda en ensamblador

Publicado por marce (1 intervención) el 09/12/2006 04:24:24
este es mi código de digito verificador... pero no se que le pasa que no lee los 3 números que debería se trata de calcular el dígito verificador... le metes un número de 3 dígitos...
el de las centenas lo multiplica por 4, las decenas X 3 y las unidades X 2 la suma de las multiplicaciones de debe dividir entre 11 y si el residuo es diferente de 1 o 0 el digito verificador es 11- el residuo de la división.

Por favor ayudenme!!!!

.model small
.stack 100h
.data
bien db 'Bienvenido. Ingresa tu NIP$'
nipi db 'NIP incorrecto, Ingresa nuevamente$'
pam db 'Juan pablo molina Cta. 301032125$'
pdat db 'Estructura y programación 5$'
.code

mov ax,@data ;
mov ds,ax
dig PROC
mov bx,0
mov ah, 09h
mov dx, offset bien ; Con estas líneas de código desplegamos Bienvenido Ingresa tu NIP despues de que ha sido activada la parte gráfica
int 21h
mov si,4

lee: mov ah, 01h
int 21h ; Leemos un caracter con eco y se guarda en AL
sub al, 30h ; Le restamos 30h para convertirlo a decimal
mul si ; Multiplicamos el contenudo en AL por el contenido de si
add bx, ax ; Guardamos en bl
dec si ; Decrementamos el contenido de Si de tal modo que el primer número será multiplicado por 4 despues por 3 y despues por 2
cmp si,2 ; comparamos con 2
jnz lee ; si es diferente que dos saltará a la etiqueta de leer hasta completar 3 vueltas en total
mov ax,bx ;
mov bl,11 ; llevo a bl un número 11
div bl ; divido AX/11, AL--> COCIENTE AH--> RESIDUO
mov al,ah
sub bl,al
cmp bl,6 ; donde 6 es el dígito verificador del NIP (431)
jnz difere

difere: mov ah, 09h
mov dx, offset nipi ; Con estas líneas de código desplegamos NIP incorrecto, regresa nuevamente
int 21h
jmp lee ; con este salto incondicional volvemos a leer los caracteres

mismo: mov ah, 09h
mov dx, offset pam ; Con estas líneas de código desplegamos nombre y número de cuenta
int 21h
mov ah, 09h
mov dx, offset pdat ; Con estas líneas de código desplegamos algunos datos
int 21h
ret
dig ENDP

end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder