SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: Mondi en Jueves 10 de Diciembre de 2009, 22:08
-
Bueno, eso q dice el titulo, ejecuto un codigo en macro assembler, visual c++ express edition, y al final tengo un call DumpRegs, para ver los registros, y los muestra pero se cierra inmediatamente y no los puedo visualizar, alguien podria ayudarme?
Gracias.
-
¿Estas ejecutando desde Inicio>>Ejecutar>>Cmd? Siempre podes poner un getchar (GetStdHandle con STD_OUTPUT_HANDLE y ReadFile).
-
TITLE Add and Subtract (16-bit.asm)
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
INCLUDE Irvine16.inc
.code
main PROC
mov ax,@data
mov ds,ax
mov eax,10000h ; EAX = 10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h
call DumpRegs
exit
main ENDP
END main
este es el programa de prueba de la libreria Irvine, de 16 bits, entonces hago el build, dps run, y al correrlo, se abre el cmd, veo unas lineas rapidas, y luego se cierra rapidamente.
gracias.
-
¿Y eso como lo ensamblas con "visual c++ express edition"? ¿Trae un ml de hace unos 15 años? Si lo ejecutas tal y como te dije no se cierra la ventana ... Inicio>>Ejecutar>>cmd.
-
si pero yo estoy ejecutando el codigo desde macro assembler, con las librerias de kip irvine.
y no puedo poner getchar en ensamblador...
-
¿Sabes usar la consola de Windows o no?
Inicio>>Ejecutar>>cmd
X:
CDDIRDIRDIR
PROGRAMA
-
cuando pongo c:Irvineexamplesch03prueba.asm q es donde tengo el archivo q quiero ejecutar, se abre el macro assembler xD
-
Ese es el codigo fuente ... tenes que ensamblarlo ... te generara un ejecutable ...
-
ok gracias, ahora si, pero igual me gustaria q al correrlo desde visual c++ se haga la pausa al final, se agradece mucho la atencion.
una pregunta, sabes de assembler? quisiera saber como guardar en un archivo los registros en forma decimal, en vez de hexa.
Gracias.
EI: juntando mensajes.
ahora si q no se q pasa, hago modificaciones a mi programa y SIEMPRE me da lo mismo, la misma ejecucion
y si lo compile de nuevo.
EI: juntando mensajes.
aqui ta la solucion a mi problema
En el menu de Herramientas / Herramientas Externas seleccionas el comando Run 16-bit ASM. Al seleccionarlo notaras que en la parte de abajo de la pantalla hay un "checkbox" que dice "Cerrar al terminar". Muy probablemente lo tienes seleccionado. Hay que des-seleccionar esa opcion y ya con eso no se cierra la pantalla al terminar la ejecucion.
-
Si queres usar eso lee: http://kipirvine.com/asm/gettingStarted/index.htm (http://kipirvine.com/asm/gettingStarted/index.htm" onclick="window.open(this.href);return false;)
ml es el ensamblador, siempre podes usarlo desde linea de comandos para ensamblar, sino lee arriba para integrarlo.
PD. Decimal y hexadecimal son unicamente una representacion, guarda el numero como entero (4 bytes).
-
solo tienes k agregar call WaitMsg para k no se cierre entonces tu codigo kedaria asi:
TITLE Add and Subtract (16-bit.asm)
; This program adds and subtracts 32-bit integers.
; Last update: 06/01/2006
INCLUDE Irvine16.inc
.code
main PROC
mov ax,@data
mov ds,ax
mov eax,10000h ; EAX = 10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h
call DumpRegs
call WaitMsg
exit
main ENDP
END main