Duda - Tutorial ASM

Iniciado por h0oke, 28 Julio 2009, 17:02 PM

0 Miembros y 1 Visitante están viendo este tema.

h0oke

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 (asm) [Seleccionar]
if( eax = 0 ) then

      stdout.put( "error: NULL pointer encountered", nl );

else

      stdout.put( "Pointer is valid", nl );

endif;


program NumsInColumns;

Código (asm) [Seleccionar]
#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 ";" "()"  :-\

Eternal Idol

Eso parece ser HLA (High Level Assembly), no es assembly y no lo podes ensamblar con MASM.
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

h0oke

 :-\ 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.  ;)

Eternal Idol

Yo no tengo conocimientos de HLA sinceramente.

El libro ese lo encontras en el primer resultado de Google para "ensamblador para dos windows".
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

h0oke

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.

ny0x

yo te recomiendo aprender asm puro primero y una vez que entiendas como funciona usar macros, o ese "high level assembly".

YST

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


Yo le enseñe a Kayser a usar objetos en ASM

h0oke

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

ny0x

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:

h0oke

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?