Autor
|
Tema: errores al compilar asm (Leído 14,904 veces)
|
Drewermerc
|
muchas gracias eternal idol. esta muy interesante los tutos y bueno pues ya pude ensamblar. bueno quisiera preguntarte lo siguiente. 1.-¿se puede ensamblar el codigo de masm en nasm? 2.-¿quisera saber si cuales la estructura para imprimir por consola es que quisiera saber hacerlo tanto en consola como por gui? 3-¿todos los programas sigues esta sintaxis como la de los tutos que me pasate o cambia? 4.-como quiero aprender asm para despues inciarme en ingieneria inversa quisiera saber si ¿aprendiendo a ensamblar de este modo despues podria intepretar cualquier programa desensamblado? por que e visto que loscodigo se pueden pueden esribir diferente pero hacen lo mismo o solo con la experencia ire dandoe de todos esos detalles.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Que yo sepa, no, aunque no use mas que un par de veces NASM: http://www.nasm.us/doc/nasmdoc2.html#section-2.2Hay que usar la API de Windows: GetStdHandle con STD_OUTPUT_HANDLE y WriteConsole. No se a que sintaxis en particular te referis, esos tutoriales son para MASM ... Si, las diferencias no son tan grandes como para no entender un codigo.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Drewermerc
|
hola gracia spor la respuestas. bueno pues estuve buscando lo que me dijiste y encontre este ejemplo y me compila pero cuando lo ejecuto no imprime nada nose si me podrias ayudar a correjirlo y acompletarlo para que lea datos y lo buelba a imprimir y s i no es mucha molestia que me digas como funciona el codigo que agreges. .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib .data ;se declara la variable con el texto hello world con salto de linea y final de cadena output db "Hello World!", 0ah, 0h .code start: ;le indicamos que seba a usar el estandar de salida ; getstdhandle como tiene tres tipos de opcion y aqui se indica que se usara el de salida invoke GetStdHandle, STD_OUTPUT_HANDLE ;aqui es la linea que no entiendo bien se que se escribe en la patalla con writeconsole y se supone que eax es un acumulador se guarda hay y luego nose por que usan sizeof ebx y NULL invoke WriteConsole, eax, addr output, sizeof output, ebx, NULL invoke ExitProcess, 0 end start
bueno espero que me puedas ayudar y gracias de nuevo y si me equivoco en algo corregeme porfavor.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
En el registro EAX esta el valor de retorno de GetStdHandle. sizeof calcula el tamaño de la cadena en cuestion. No entiendo la razon de usar EBX en ese contexto. ¿Cual es su valor? Es indefinido y ahi tenes que poner un puntero a un DWORD: _Out_ LPDWORD lpNumberOfCharsWritten, lpNumberOfCharsWritten [out] A pointer to a variable that receives the number of characters actually written. .data ... written dd 0 ... invoke WriteConsole, eax, addr output, sizeof output, offset written, NULL
Todo esto es basicamente uso de la API de Windows, no esta relacionado con assembly necesariamente, asi que primero busca en la MSDN la documentacion de las funciones de consola y practica con C/C++ si tenes problemas.
|
|
« Última modificación: 5 Mayo 2014, 01:15 am por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Drewermerc
|
hola Eternal Idol. bueno gracias entonces revisar los tutoriales y me pondre en practica gracias por todo nos vemos saludos.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
De nadas, con el arreglo del EBX ya deberia funcionar (ejecuta el programa desde cmd sino se te va a cerrar la consola automaticamente sin ver nada).
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Drewermerc
|
hola perdon pero no teentendi bien eso de con el arreglo ebx deberia de funciona. nose si me pueda explicar. y bueno si cuando ejecuto el programa no me muestra nada segun y buscando encontre que me faltaba iniciar el stout con allocConsole yahora si me habre rapido la consola y segun yo el codigo queda asi. .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib .data ;se declara la variable con el texto hello world con salto de linea y final de cadena output db "Hello World!", 0ah, 0h ;data ;written dd 10 .code start: invoke AllocConsole invoke GetStdHandle, STD_OUTPUT_HANDLE invoke WriteConsole, eax, addr output, sizeof output, offset written, NULL invoke ExitProcess, 0 end start
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Si el SUBSYSTEM es CONSOLE no hace falta llamar a AllocConsole, y en este caso deberia serlo. Asi genere el ejecutable yo: ml /Cp /coff console.asm /link /subsystem:console
Ahora con ejecutarlo desde cmd.exe (tecla de Windows + R, cmd) deberias ver la cadena.
PD. Ahi en tu codigo tenes comentado written por ejemplo.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Drewermerc
|
hola si es cierto mi error fue que yo al momento de likear lo ponia asi. SYSTEM:WINDOWS Y ERA COMO TU ME DIJISTE SYSTEM:CONSOLE.
muchas gracias nos vemos saludo.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
De nadas
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
como compilar blender 2. 5 en UBUNTU para determinar errores
Diseño Gráfico
|
rub'n
|
3
|
4,838
|
22 Septiembre 2010, 00:06 am
por peib0l
|
|
|
errores de programa en C al compilar gcc
Programación C/C++
|
ferminta
|
4
|
3,026
|
13 Enero 2012, 18:40 pm
por rir3760
|
|
|
Errores al compilar
Programación C/C++
|
Supermanxd
|
3
|
3,034
|
6 Marzo 2015, 07:25 am
por rir3760
|
|
|
Ayuda, me aparecen errores al compilar
Dudas Generales
|
anywombay454
|
1
|
3,152
|
22 Enero 2017, 19:12 pm
por anywombay454
|
|
|
Ayuda con codigo ? C++ error al compilar, al compilar recibo errores (id turned 1 exit estatus) y..
Programación C/C++
|
DonJuanPinorio
|
4
|
3,491
|
9 Febrero 2021, 19:02 pm
por Usuario887
|
|