Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
debug
Enviado por jemf el día 22 de octubre de 2003
Hola, tengo un problemita con Debug, necesito saber como mostrar en pantalla el dato que guarda en cx
....
Enviado por manuel_03 el día 25 de octubre de 2003
Hola, hay tres posibilidades:
1.) Si estás en la línea de comandos de debug (guión -), escribes "r" y te muestra todos los registros, o bien "r cx" y te muestra el valor de cx y además te deja modificarlo.
2.) Durante la ejecución de un programa puedes introducir un punto de ruptura mediante "int 03". Cuando el programa llegue a dicho punto, se detendrá, y además mostrará todos los registros con sus valores en ese momento.
3.) Si además no quieres que se detenga el programa, debes construir una rutina mediante operaciones aritméticas y lógicas que traduzca el valor de cl y ch a código ascii, y a continuación mostrar por pantalla el resultado obtenido mediante int 21h o int 10h con sus funciones correspondientes.
Hey manuel muchas gracias por ayudarme con lo de debug, lo que me recomiendas es muy cierto,los 2 primeros pasos, son por logica los mas faciles, pero es el 3 caso el que necesito saber como hacer, es decir como puedo cambiar de Hexa a AsCII, eso es lo que necesito saber, y sabes como te agradeceria me dieras algunos tip para hacerlo, de antemano muchas gracias.
Att.
Jemf
Enviado por manuel_03 el día 5 de noviembre de 2003
Hola, Jemf.
Una forma es la siguiente:
Si miras una tabla ASCII donde aparezcan los caracteres y al lado su código ASCII numérico, observarás algo curioso: Las cifras decimales 0,1,2,3,4,5,6,7,8,9 ocupan posiciones contiguas!!.
Esto es una enorme ayuda, pues puedes seguir la siguiente rutina:
Vas dividiendo el registro cx por 10 (en hex 0a), y te vas quedando con los RESTOS DE LAS DIVISIONES, que obviamente son valores de 0 a 9. Así, repitiendo el proceso vas obteniendo las cifras del número, pero NO en ASCII.
¿Y cómo pasarlas a ASCII?. Pues muy fácil, simplemente les sumas el código ASCII del 0, pues como te dije antes las cifras están consecutivas en código ASCII. Una vez ya tengas todas las cifras pasadas a ASCII, las imprimes por pantalla, bien mediante int 10 (BIOS) o int 21 (DOS) o bien escribiendo directamente sobre la memoria de vídeo (en modo alfanumérico b800:0000).
Ejemplo: 125
resto(125/10)=5 ---------------> 5 es la cifra de unidades
cociente(125/10)=12;
resto(12/10)=2 --------------> 2 es la cifra de las decenas
cociente(12/10)=1
resto(1/10)=1 ---------------> 1 es la cifra de las centenas.
Código ASCII de 0 es 48=48+0=ASCII(0)+0
Código ASCII de 1 es 49=48+1=ASCII(0)+1
Código ASCII de 2 es 50=48+2=ASCII(0)+2
....
Con esto podrás escribir en decimal el valor de cx.
Si quieres valor hexadecimal, tendrás que "traducir" 10 por a, 11 por b, 12 por c, 13 por d, 14 por e, 15 por f.
Espero que te sirva para conseguir tu objetivo. De paso, si tienes algo de acceso a la memoria extendida a bajo nivel (BIOS) te agadecería que me lo mandases.
Saludos
Manuel
pense que me podrias ayudar con un problema que tengo, necesito hacer un programa en debug que lea el puerto parallelo y lo ocmpare con el valos 87 y si es igual qeu saqeu un letrero diciendo encendido si es diferente apagado.
No se que tipo de persona pueda preguntar algo así, ya que es muy trivial, y los códigos ascci para los diferentes sistemas operativos están todos en la red. Por ejemplo, solo coloca Assi en un buscador y ....
Necsesito saber como mostrar en el Debug el ABC en mayusculas en forma diagonal y el de ninusculas en forma vertical se lo agradeceria si podria tener la respuesta lo antes posible.Gracias
Me podrian ayuda ha realizar este rpograma lo que pasa es que no conosco casi nada del lenguaje ensamblador, el programa es el siguiente:
Con un lenguaje ensamblador para realizar calculos y dar la salida por 3 modos :
1. por la impresora
2.por pantalla
3.transferido por la red