Programación => ASM => Mensaje iniciado por: doommachine en Mayo 15, 2016, 08:06:42 am
Título: Ayuda, No me funciona un programa sencillo de suma de registros
Publicado por: doommachine en Mayo 15, 2016, 08:06:42 am
Muy buenas a todos estoy usando asm x86, hice mi primer programa en ensamblador y no funciona, consiste en meter valores en AX y BX y luego sumarlos dentro de AX.
Estoy usando el "debug" de windows xp para programar,
primero comencé con el comando "-r" de "debug" para mostrar todos los registros, AX y BX estan en "0000". Luego use el comando "-a" para iniciar el ensamblado en "0100".
luego escribí todo el código para sumar y luego interrumpir:
todo esto es hecho en el debug de windows xp
Código: ASM
movax,0002;coloca el valor 0002 en el registro ax
movbx,0004;coloca el valor 0004 en el registro bx
addax,bx;le adiciona al contenido de ax el contenido de bx
int20; provoca la terminación del programa.
Luego el comando "-g" para ejecutar el programa, se ejecuta correctamente, pero luego al escribir "-r" para ver los registros, los registros AX y BX siguen en "0000" cuando deberia estar AX en "0006" y BX en "0004", no se porque no funciona la suma o el programa.
Aquí una captura del proceso: (http://s2.subirimagenes.com/otros/previo/thump_9584324asm.jpg)
¿Alguien tiene idea que porque no muestra los resultados correctos?
Título: Re:Ayuda, No me funciona un programa sencillo de suma de registros
Publicado por: FlaskBreaker en Mayo 15, 2016, 01:12:17 pm
No sé cómo funciona el comando debug de Windows XP, pero si miras los registros, el IP (Instruction Pointer), apunta a la dirección 0x100, es decir, a la dirección de la instrucción mov ax, 0002 (que aún no se ha ejecutado). Conclusión, no ha ejecutado el programa.
Tips por si alguno lo arregla/sirve de ayuda:
Quizá resetea el programa, prueba a poner un breakpoint en la línea de int 20.
Prueba a usar t (trace), para ejecutar instrucción a instrucción.
Prueba a usar otra vez g, después de ejecutarlo una vez.
Título: Re:Ayuda, No me funciona un programa sencillo de suma de registros
Publicado por: hackmundy en Julio 15, 2016, 07:20:38 am
Yo recien estoy aprendiendo ASM por la universidad recien voy por el add programamos con MIPS32, bueno para sumar hacemos lo siguiente a=b[5]+c
lw $t0,5($s1) add $t1,$s1,$s2
en $t1 se almacenara el registro.
saludos
Título: Re:Ayuda, No me funciona un programa sencillo de suma de registros
Publicado por: edilber en Abril 26, 2017, 02:38:26 am
Que tal amigo, disculpa si respondo fuera de tiempo, pero para clarificar la duda y abrir nuevos motivos para seguir programando en este lenguaje posteo lo que yo considero está el error, cuando ejecutas con -g debes especificar hasta que segmento de memoria debes aplicar la ejecución, en este caso sería -g108, con esto debería mostrarte los cambios en cada registro.
Saludos!!!
Título: Re:Ayuda, No me funciona un programa sencillo de suma de registros
Publicado por: b10s_0v3rr1d3 en Mayo 11, 2017, 07:40:12 pm
@doommachine: para lo que quieres hacer, tienes que usar el 'p' y veras como lo executa linea por linea ;)
los 0's que pones en los valores no te hacen falta, como en el "a0100" puedes ponerlo como "a100" que es lo mismo. el int 20 del final no te hace falta tampoco si lo que quieres es hacer pruebas de este tipo, lo que si que para programar en ello no te recomendaria el debug precisamente xD
nos leemos :P
Título: Re:Ayuda, No me funciona un programa sencillo de suma de registros
Publicado por: alanchoo en Noviembre 19, 2018, 06:18:48 am
Después de usar -a para ensamblar tu código tienes que poner -r para ver los registros iniciales Luego, poner puros -t para ejecutar línea por línea
Saludos
Título: Re:Ayuda, No me funciona un programa sencillo de suma de registros
Publicado por: mundonuevo en Marzo 25, 2021, 11:49:32 pm