Código:
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
Te recomiendo que te leas el primer tomo que es una introduccion, los segundos volumenes que son las referencia de las instrucciones. Puedes leer los demas pero de momento con eso ya estas bien.
Saber como funciona un poco as y ld.
Código:
http://sourceware.org/binutils/docs/as/
http://sourceware.org/binutils/docs/ld/
Bueno acabas de decir que tienes un procesador x64 y lo estas usando a x86, ya que tienes un procesador de x64 porque lo usas a x86?
En x64 los registros son de 64 bits (logico) vamos el doble, puedes cargas mas datos en ellos sin tener que usar el stack, tienes nuevos registros de calculo general r8-r15 algunos de ellos son para pasar argumentos y otros son libres, en x86 haces interrupciones al vector 80 y en x64 tienes una instruccion llamada syscall que es mas rapida que llamar al vector.
Código:
http://blog.rchapman.org/post/36801038863/linux-system-call-table-for-x86-64
http://syscalls.kernelgrok.com/
Las interrupciones, la segunda es de x86 solo cambian los registros, son de kernels algo pasados, pero siempre puedes mirarlos en el sistema. Tambien te recomiendo que no te acostumbres a utilizar llamadas ya que desde mi punto de vista no es ASM puro, pero como estas en ring3 estas obligado a usarlas, int 80 y syscall llaman a unas funciones escritas casi siempre en C que estan en el kernel, es una explicacion muy basta pero en el manual no la hubieras entendido.
Pero bueno seguro que tienes el Ubuntu a x86 porque seguro que leiste por hay que seria mas estable.
Bueno empieza por leer y entender un Hello word.
Un saludo.