Programación General > ASM (Ensamblador)

 .... Asesoria Con El Debug

<< < (2/5) > >>

Toph:
:) hola viendo tu programa eh visto algunos errores primero inicias saltando a la direccion 125 donde lo que haces es
--- Citar ---**:0125 MOV DX,0125
**:0128 MOV AH.9
**:012A INT 21
--- Fin de la cita ---
con esto quieres sacar una cadena de caracteres pero en DX has puesto 0125 que se supone es el inicio de la cadena de caracteres que quieres sacar y la que quieres sacar esta en la 102 no en la 125
--- Citar ----e102 'TECLEA UN NUMERO DEL 1 AL 5 ' 0D 0A '$'
--- Fin de la cita ---
luego debe ir la rutina en la que lees el numero tecleado lo puedes hacer de dos formas:

1)
--- Código: Text ---mov ah,01int 21  con esto queda en AL la tecla presionada y se presenta la tecla presionada en pantalla
2)
--- Código: Text ---mov dl,ffmov ah,06int 21  con esto igual, queda en AL la tecla presionada pero no se muestra en pantalla
luego en la comparacion  haces esto
--- Citar ---**:012C CMP AL ,0D
**:102E JNE 125
--- Fin de la cita ---
aun no se porque, supuestamente tendrias que comparar si el numero esta entre 1 y 5  esto lo puedes hacer de la siguiente forma:


--- Código: Text ---cmp al,31jl xxxcmp al,35jg xxx  en xxx tendrias que poner la direccion donde esta la rutina que envia el mensaje de error y sale del programa, aqui lo que haces es preguntarte, primero el numero es menor de 31 osea "1" si es asi entonces salta al error, luego se pregunta si es mayor de 35 osea "5" si es asi salta al error tambien.
abajo de esta comparacion deberia estar la rutina de "tecleaste tal numero "

saludos  :hola:

cybergatita:
Gracias tania_D, Me ah sido de utilidad tu respuesta

cybergatita:
Cheque el enlace siguiente, entre otros manuales de ensamblador:
http://www.ctyme.com/rbrown.htm.
Modifique mi codigo: el cual quedo:
-a100
:0100 JMP 176
:0103
-e102  ‘teclea un numero del 1 al 5’ 0d 0a ‘$’
-e11F  ‘tecleaste el 1’ 0d 0a ‘$’
-e12E  ‘tecleaste el 2’ 0d 0a ‘$’
-e13E  ‘tecleaste el 3’ 0d 0a ‘$’
-e14E  ‘tecleaste el 4’ 0d 0a ‘$’
-e15e   ‘tecleaste el 5’ 0d 0a ‘$’
-e16E   ‘error’ 0d 0a ‘$’
-a176
:176 mov dx,102
:179 mov ah,9
:17B int 21
:17D mov ah,1
:17F int 21
:181 cmp al,31
:183 je 19E
:185 cmp al,32
:187 je 1ª7
:189 CMP al, 33
:18B je 1B0
:18D cmp al,34
:18F je 1B9
:191 cmp al,35
:193 je 1c2
:198 mov dx,16C
:198 mov ah,9
:19A int 21
:19C int 20
:19E mov dx,11F
:1A1 mov ah,9
:1A3 int 21
:1A5  int20
:1A7 mov dx,12C
:1AA mov ah,9
1AC  int 21
1AE int 20
1B0 mov dx,13E
1B3 mov ah,9
1B5 int 21
1B7 int 20
1B9 mov dx,  14E
1B6 mov ah,9
1BE int 21
1C0 int 20
1C2 mov dx,15E
1C5 mov ah,9
1C7 int 21
1C9 int 20
1CB
...Lo estoy probando con Debug bajo, en una ATHLON A 700MHZ con Xp profesional, el resultado es algo parecido a esto:

teclea un numero del 1 al 5

tecleaste el 1
tecleaste el 2
tecleaste el 3
tecleaste el 4
tecleaste el 5
  error


Me aparece todo, tecleo un numero y al parecer hace la comparacion pero sin borrar los mensajes,?

¿Me falta algo? o cometi algun error?


Gracias de antemano

Toph:

--- Citar ---Me aparece todo, tecleo un numero y al parecer hace la comparacion pero sin borrar los mensajes,?

¿Me falta algo? o cometi algun error?
--- Fin de la cita ---

Hola, si hay un error en tu codigo el problema es el siguiente:
esta aqui:

--- Código: Text ----e102 ‘teclea un numero del 1 al 5’ 0d 0a ‘&#036;’-e11F ‘tecleaste el 1’ 0d 0a ‘&#036;’-e12E ‘tecleaste el 2’ 0d 0a ‘&#036;’-e13E ‘tecleaste el 3’ 0d 0a ‘&#036;’-e14E ‘tecleaste el 4’ 0d 0a ‘&#036;’-e15e ‘tecleaste el 5’ 0d 0a ‘&#036;’-e16E ‘error’ 0d 0a ‘&#036;’ el mensaje inicia en la 102 pero con toda la cadena "teclea un numero del 1 al 5’ 0d 0a ‘$’ " queda el signo de $ (que es el que le dice al programa donde termina la  cadena a mostrar) justo en la posicion 11F, pero tu despues lo borras al introducir la otra cadena ya que la introduces justo a partir de la 11F, con las otras cadenas haces lo mismo sigues borrando los signos $ porque desde esa direccion inicias la siguiente cadena y asi por lo que el programa toma el unico $ que no borras o sea el que esta en la cadena error como el final del mensaje por eso te muestra todo.
checa bien que haya espacion entre los mensajes para que no se superpongan entre ellos

saludos  :hola:

cybergatita:
Checando lo que me comentaste Tania_ sobre los espacios,  cheque lo siguiente:
por ejemplo en:

-e102 ‘teclea un numero del 1 al 5’ 0d 0a ‘$’
-e11F ‘tecleaste el 1’ 0d 0a ‘$’


La direccion 11F salio de 102 mas 28, que 28 es el total de la cadena que contiene la direccion 102, de hecho son 27, la suma de estos me dio 11D y puse aun  mas 11F, por aquello de lo mismo que me comentas.

¿ O bien que espacio seria recomendable?



Gracias Tania por tus respuestas.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa