Problema con dirección 0xB400

Problema con dirección 0xB400

de Juan Santiago Garcia Pose -
Número de respuestas: 5

Buenas, tengo la tarea en un 99,9% pronta, el código parece estar correcto, pero me surge un problema que no sabría como corregirlo y es el siguiente:

Cuando utilizo el debugger pongo un Break en la etiqueta fin, para así ver como me quedaron los registros y los contenidos de las direcciones, pero me llevo la sorpresa de que cada vez que el debugger para en ese Break, en la dirección 0xB400 me aparece un número incoherente con el resultado de la resta de Alfa y Beta, y más curioso aún, siempre es el mismo (10261)

Al principio creí que en algún momento mi código por algún error sobrescribía en esa dirección dicho valor, por lo que ejecute con el debugger paso a paso mirando en cada uno todos los valores y corroborando que fueran los correctos, como utilicé una estructura de repetición para recorrer los lugares de la memoria (desde Beta hasta Beta+Alfa-1), llegado un momento mirando paso a paso entré de nuevo a la rutina de la repetición teniendo todos los valores (incluso el guardado en el lugar 0xB400) correctos, por lo que me tiene bastante desconcertado. 

Y una importante aclaración es que luego de esa rutina de repetición mi código tiene solo dos lineas que son para guardar el resultado de la cantidad de "mayores a 127" antes de terminar en "fin". E incluso no utilizo el mismo banco de registros que utilicé para guardar en la dirección 0xB400, ambos bancos con las direcciones solamente se utilizan para ese propósito (en un intento de solucionar el problema).

Y para terminar la historia, cuando pongo el comando "cont" para que termine el debugger en el Break fin, miro la dirección 0xB400 y me aparece el bendito valor de arriba, mientras que en la dirección 0xB401 sí me aparece el valor correcto de la cantidad de mayores que 127.

Espero haya quedado bien planteada mi duda, realmente ya intenté todo lo que estaba a mi alcance en mi escaso conocimiento pero no logro solucionarlo.

Dejo dos capturas para que se entienda, en ambos casos los registros tienen todos los valores correctos, sin embargo el problema persiste.


Agradezco ayuda a este pobre hombre jaja

Adjunto Sin título.png
En respuesta a Juan Santiago Garcia Pose

Re: Problema con dirección 0xB400

de Juan Santiago Garcia Pose -

Y aquí la otra captura del final, con los contadores B (que decrece con cada iteración hasta cero y termina) y C (cantidad de mayores) con valores correctos, y los pares DE y HL con las direcciones usadas. 


ACTUALIZACIÓN:  Cambio la dirección 0xB400 por otra (ej 0xB412) y si me sale el resultado correcto al final. Más desconcierto aún, mientras que la 0xB401 esta correcta.

Adjunto 2.png
En respuesta a Juan Santiago Garcia Pose

Re: Problema con dirección 0xB400

de Tomas Manuel Arrivillaga Almoguera -

Hola, a mi me pasa lo mismo. A la conclusión que llegué es que cuando hago el comando X/B400 el resultado que te aparece en la consola es el siguiente número: 0x(lo que está guardado en B400 en hexadecimal)(lo que está guardado en B401 en hexadecimal) y luego pasado a decimal. Sólo para corroborar, puedes agarrar tus resultados colocandolos como mencioné y ver si es el número que te dió? El 10261

En respuesta a Tomas Manuel Arrivillaga Almoguera

Re: Problema con dirección 0xB400

de Francisco Veirano -

Hola, les recomiendo estudiar bien como funciona el comando x. En particular las opciones que se le pueden dar para obtener la salida en el formato deseado.

------------------------------------------------------------------------------------------------------------------------------------------------------

	x [/fmt] address
examinar memoria. /fmt es un indicador opcional formado por '/', seguido de un número (contador), seguido de una letra de formato, seguido de una letra de tamaño. Las letras de formato son:
		o	octal			f	float
x hexadecimal a address
d decimal u unsigned decimal
t binary s string
c char
las letras de tamaño son:
		b	byte			h	halfword
w word g giant (8 bytes)
El contador indica cuantos elementos mostrar, asi:
		x /10xb arreglo
muestra los 10 siguientes bytes del arreglo en hexadecimal.
En respuesta a Francisco Veirano

Re: Problema con dirección 0xB400

de Nicolas Fernando Machin Justet -

¿No sería:

x /10bx arreglo
en vez de:

x /10xb arreglo
???