Es tipo UNix, Intel
Bien, entonces te puedo recomendar varios libros y links interesantes que a mi me ayudaron.
El codigo ese si queres te lo explico, pero creo que mas haya de eso seria mas recomendable que leas algun libro(si ya se re pesado pero es lo mas recomendable)
Ese codigo que pusiste es para Linux, y utiliza las llamadas a sistemas que brinda dicho sistema operativo (equivaldrian a las API de Windows).
El codigo lo que hace es mostrar un mensaje en pantalla, mediante la llamada a sistema: sys_write. Los sistemas Unix brindan una interrupcion por software, que no es mas que una rutina, que seria la "0x80" que es la que maneja las llamadas al sistema por asi decirlo. Cuando se salta a la interrupcion "0x80" (A traves de la instruccion "int 0x80"") quiere decir, BASICAMENTE, que queres usar un servicio que brinda el sistema operativo.. Cual de todos? el que especificas en el registro "eax" antes de saltar a la interrupcion... ok y como le paso los parametros a dicho servicio del sistema... facil con los demas registros... (ebx, ecx, edx)
Bueno la explicacion es re cutre pero es lo que se me ocurrio en el momento.
Paso a explicarte el codigo.
mov edx,len -> tercer parametro a sys_write la longitud de la cadena que queres escribir
mov ecx,msg -> segundo parametro a sys_write y es la direccion de la cadena que queres escribir
mov ebx,1 -> primer parametro para sys_write y es a a que descriptor de fichero vas a escribir en este caso seria a STDOUT osea la salida estandar que seria la pantalla...
mov eax,4 -> en eax va la llamada a sistema que queres realizar a cada sys_call se le asigna un numero a sys_write se le asigna el numero 4
int 0x80 -> aca se invoca a la rutina de manejo de llamadas al sistema... con los parametros asignados arriba
DB significa Define byte, en este caso su uso es similar a declarar un arreglo de caracteres (o cadena para algunos) en C.
El caracter 0xa es el caracter ASCII de salto de linea en decimal es el numero 10 ... LF es lo mismo que el caracter '\n' en C.
Espero hayas comprendido por lo menos un poco mas de como va el codigo ese...
El libro que yo te recomiendo es... "Professional Assembly" ... pero no te dejes llevar por el titulo no es para expertos ni nada de eso .. lo que si es que explica muchas cosas, y es bastante interesante si tenes un unix.. ya que aparte te enseña a programar utilizando las herramientas de gnu binutils (gnu as, gprof, ld, etc etc).. aunque no las explica en profundidad te va a servir de mucho... y esta orientado a la plataforma IA-32 incluso incluye un apartado para las extensiones SIMD, SEE, SEE2 de Intel...
Trata de sobre inline assembly con en C y C++, explica como usar la libreria de C en ensamblador y como crear funciones en ensamblador para utilizar en programas en C o C++, tiene un gran capitulo sobre la FPU, en fin es un buen libro.. Eso si usa la sintaxis AT&T, ya que el ensamblador GAS de GNU usa esa sintaxis que es un poco diferente a la sintaxis Intel pero no menos intuitiva como algunos dicen
...
Hace unos meses habia empezado a leer otro libro(el cual lo deje al quinto capitulo
) llamado "Assembly Language step by step" que tambien esta orientado a programacion en Linux .. pero utilizando NASM talvez este te resulte mejor por la sintaxis Intel.. digo nose.. por lo que alcane a ver explica con mas detalle los procesadores de Intel, el manejo de memoria y demas cosas que te van a resultar de mucha ayuda si lo desconocias... El resto del libro es mas o menos lo mismo, supongo, que los demas libros dentro de esta area...