Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: h0oke en 28 Julio 2009, 17:02 pm



Título: Duda - Tutorial ASM
Publicado por: h0oke en 28 Julio 2009, 17:02 pm
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:

Código
  1. if( eax = 0 ) then
  2.  
  3.      stdout.put( "error: NULL pointer encountered", nl );
  4.  
  5. else
  6.  
  7.      stdout.put( "Pointer is valid", nl );
  8.  
  9. endif;

program NumsInColumns;

Código
  1. #include( "stdlib.hhf" )
  2.  
  3. var
  4.   i32: int32;
  5.   ColCnt: int8;
  6.  
  7. begin NumsInColumns;
  8.  
  9.   mov( 96, i32 );
  10.   mov( 0, ColCnt );
  11.   while( i32 > 0 ) do
  12.  
  13.      if( ColCnt = 8 ) then
  14.  
  15.         stdout.newln();
  16.         mov( 0, ColCnt );
  17.  
  18.      endif;
  19.      stdout.puti32Size( i32, 5, ' ' );
  20.      sub( 1, i32 );
  21.      add( 1, ColCnt );
  22.  
  23.   endwhile;
  24.   stdout.newln();
  25.  
  26. end NumsInColumns;

Me parece medio rara la sintaxis, ya que cuando trabajé con MPLAB no utilizaba ";" "()"  :-\


Título: Re: Duda - Tutorial ASM
Publicado por: Eternal Idol en 28 Julio 2009, 17:03 pm
Eso parece ser HLA (High Level Assembly), no es assembly y no lo podes ensamblar con MASM.


Título: Re: Duda - Tutorial ASM
Publicado por: h0oke en 28 Julio 2009, 17:08 pm
 :-\ 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.  ;)


Título: Re: Duda - Tutorial ASM
Publicado por: Eternal Idol en 28 Julio 2009, 17:13 pm
Yo no tengo conocimientos de HLA sinceramente.

El libro ese lo encontras en el primer resultado de Google para "ensamblador para dos windows".


Título: Re: Duda - Tutorial ASM
Publicado por: h0oke en 28 Julio 2009, 19:02 pm
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.


Título: Re: Duda - Tutorial ASM
Publicado por: ny0x en 28 Julio 2009, 19:14 pm
yo te recomiendo aprender asm puro primero y una vez que entiendas como funciona usar macros, o ese "high level assembly".


Título: Re: Duda - Tutorial ASM
Publicado por: YST en 28 Julio 2009, 19:50 pm
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


Título: Re: Duda - Tutorial ASM
Publicado por: h0oke en 28 Julio 2009, 20:11 pm
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


Título: Re: Duda - Tutorial ASM
Publicado por: ny0x en 28 Julio 2009, 20:19 pm
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:


Título: Re: Duda - Tutorial ASM
Publicado por: h0oke en 28 Julio 2009, 20:22 pm
Citar
si 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?


Título: Re: Duda - Tutorial ASM
Publicado por: ny0x en 28 Julio 2009, 20:37 pm
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


Título: Re: Duda - Tutorial ASM
Publicado por: YST en 28 Julio 2009, 20:49 pm
Citar
si 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


Título: Re: Duda - Tutorial ASM
Publicado por: h0oke en 28 Julio 2009, 20:53 pm
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!


Título: Re: Duda - Tutorial ASM
Publicado por: Yurix en 29 Julio 2009, 17:44 pm

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