puedes comensar conlo mas simple:
;;********
mov ah,9
mov dx,offset cadena
int 21h
int 20h
cadena db 'HOLA$'
;;*********
ese programa muestra un mesaje en pantalla(DOS)("HOLA"), pero se estas empesando talves sera mejor por lo mas basico que seria el microprocesarodor 8086 de intel, conocer su arquitectura y su modelo de programacion, ahi conoceras los registros d eproposito genral como ax,bx,cd y dx ademas de los muchos otros registro, tambien es muy util saber el concepto de registro antes de eso; y despues la lista de instrucciones.
sobre las ventajas de este lenguaje talves en la actualidad no sean muy acentuadas frente a los lenguajes de alto nivel comolos visuls u otros, pero si entiendes assembler puedes entender mejor como funciona los otros leguajes y en algunos casos los aprecies mas.
Para mi una de sus ventajas seria que al hacer mi progra no importando el grado de emulacion en el que se llegue a ejecutar diria que el leguaje te da la opertunidad de interactuar con el crebro de un ordenador como lo es el micro, y charlar con el(lenguaje ensamblador) directamnete sabiendo que "escucha" exactamente lo que le "dices" al programar si "interlocuciones" y directo, si es cierto que necesario "volver a inventar la polvora" pero es intersante hacer programas que con lenguajes de alto nievl lo haces en una linea, pero que magnifico es hacer algoritmos para este leguaje, y si lo haces bien entoces podras decir que ese algoritmo tuyo es mas eficientes que otros en lenguajes de alto nivel.
En la red puedes encontrar mas datos, existe bastante informacion sobre esto, tambien en el foro otras personas dieron buenos links de tutoriales de ASM.