Hola me he decidido por estudiar algo de ASM. Para ello me baje The Art of Assembly, y MASM32.
Mi duda es el tema de los compiladores y como diferenciar la sintaxis. En este caso necesito saber si los ejemplos puedes ser compilados tranquilamente con MASM32, ejemplo que dan en el libro:
if( eax = 0 ) then
stdout.put( "error: NULL pointer encountered", nl );
else
stdout.put( "Pointer is valid", nl );
endif;
program NumsInColumns;
#include( "stdlib.hhf" )
var
i32: int32;
ColCnt: int8;
begin NumsInColumns;
mov( 96, i32 );
mov( 0, ColCnt );
while( i32 > 0 ) do
if( ColCnt = 8 ) then
stdout.newln();
mov( 0, ColCnt );
endif;
stdout.puti32Size( i32, 5, ' ' );
sub( 1, i32 );
add( 1, ColCnt );
endwhile;
stdout.newln();
end NumsInColumns;
Me parece medio rara la sintaxis, ya que cuando trabajé con MPLAB no utilizaba ";" "()" :-\
Eso parece ser HLA (High Level Assembly), no es assembly y no lo podes ensamblar con MASM.
:-\ Si eso me imaginaba, y creo que aqui no tratan este tema.
EI que recomiendas? He buscado el libro que le recomendaste a Erik hace un tiempo pero no lo he encontrado. Busqué otros, pero la mayoría contienen cosas muy básicas(básico me refiero a que se centran más en la teoría de algebra de boole, suma y resta de binarios :S) y no realmente lo que deseo, que es aprender a programar en Assembly.
Aunque si tu me recomiendas estudiar HLA todo bien. ;)
Yo no tengo conocimientos de HLA sinceramente.
El libro ese lo encontras en el primer resultado de Google para "ensamblador para dos windows".
Alguien a programado en HLA?
Será análogo pensar en ASM(C) - HLA(C++)?
-Se que no tiene nada que ver C++ con HLA, ya que C++ es orientado a objetos.
yo te recomiendo aprender asm puro primero y una vez que entiendas como funciona usar macros, o ese "high level assembly".
Para leer sobre lenguaje ensamblador te recomiendo leerte los tutoriales de Iczelion :P y tambien el libro "Lenguaje eensamblador para mcomputadoras basadas en intel" de Kip R. Irvine
http://foro.elhacker.net/asm/programacion_en_lenguaje_ensamblador-t255444.0.html;msg1237437#msg1237437
Gracias por los consejos.
La verdad que ASM para PC es totalmente nuevo.
Lo que tenía dudas es sobre la portabilidad(lo que me explicó ny0x); y la parte de compiladores. Pensé que dependiendo del compilador debería estudiar Assembly, pero veo que es todo igual a diferencia del microprocesador que se utilice, lo anterior fue un "no entendimiento" cuando se me presentó HLA, pensé que Assembly era igual pero al parecer existen también paradigmas.
Bueno, poco a poco iré aprendiendo, por el momento quiero que mi Hello World compile correctamente.
Para terminar, veo que la mayoría al programar utiliza directamente las api's de windows con invoke; tendría que ir directamente a ese punto? o comenzar con aplicaciones sin utilizar librerías? (Les recuerdo que vengo de programar en nivel alto, y generalmente uno comienza con aplicaciones de consola, y luego comienza a manejar API's).
Un saludo
si no usas apis tus resultados solo los vas a ver con un debugger, y puedes usar las funciones de c importandolas de msvcrt.dll, aunque te recomiendo aprender el paso de paremtros de las calling conventions antes de usar macros como es el caso de invoke. Aunque con invoke sea mas facil :rolleyes:
Citarsi no usas apis tus resultados solo los vas a ver con un debugger
Ah! Digamos que ASM no tiene un "modo consola"? Unicamente veré un mensaje utilizando API's?
si que lo hay, pero como te dije puedes usar las funciones de C, por lo pronto practica con los ejemplos del libro y/o tutorial que estes leyendo
Cita de: Pseuth en 28 Julio 2009, 20:22 PM
Citarsi no usas apis tus resultados solo los vas a ver con un debugger
Ah! Digamos que ASM no tiene un "modo consola"? Unicamente veré un mensaje utilizando API's?
ASM se puede utilizar en modo consola , pero para imprimir datos y todo eso es neceesaario o usar interrupciones o api's :P
Listo :D
Dudas aclaradas. He descargado el libro que me recomendó ny0x, he comenzado a leer, espero tener algo de éxito.
Muchas gracias.
Un saludo!
Hola Pseuth , si deseas poner ese código en MASM lo mejor es que lo compiles con HLA y después con OLLY copies el código con el plugin Asm2Clipboard.dll y lo podrás portar para masm . Saludos