Alors déjà je t'envoie vers :
Le manuel de Netwide Assembler, c'est rempli d'info usefull.
Ici quelques infos sur l'assembleur sous Linux (même si tu code avec Windows il y a quelques trucs bon à prendre).
Bon c'est vraiment dur de trouver un tutorial complet, cohérent, facile d'accès sur l'assembleur
(je m'y connais malheureusement pas accès pour faire un tuto)
Bonne chance.
edit :
si je suis motivé je te fait un source de hello world en assembler x86 dans la journée (j'ai sous la version asm SPARC (qui a une syntaxe dans le style AT&T) donc ça risque plus de t'embrouiller qu'autre chose)
Tu code sur Windows ou Linux?
Voila un code fait l'arrache qui affiche hello world sous linux puis quo fait une erreur de segmentation
; les commentaires commencent pas un ;
[BITS 32]
GLOBAL _start ; point d'entree du programme
segment .data ; donnée initialisées
chaine db 'hello world',10,0 ;chaine est un label
; db sert à réserver de la place pour des données (ici des byte) initialisés
; 'hello world' est une chaine de style C terminer par un caractère nul
; pour des valeurs non initialisées on utilise resb, resw, ... (ça correspond aux variables du C)
segment .text ;segment de code exécutable
_start: ;début du programme
xor eax, eax ; le registre eax est mis à zéro
add eax, 4 ; on ajoute 4 a eax
mov ebx, 1 ; on met dans ebx
mov ecx, chaine ; on met l'adresse de début de la chaine dans ecx
mov edx, 14 ; longueur de la chaine
int 0x80 ; interruption logiciel 80, elle sert à délancher un appel système, ici write
A compiler comme ça :
nasm -f elf hello.as
ld -o hello hello.o
et pour lancer : ./hello
en fait dans le registre eax j'ai mis 4 qui est le numéro de l'appel système à utiliser
(/usr/include/asm/unistd.h donne la liste des appels systèmes et leur signification)
ensuite il faut remplir les registre comme l'indique la fonction du manuel (man 2 write) :
ssize_t write(int fd, const void *buf, size_t count);
eax ebx ecx
1 (stdout) chaine 14
Bon en fait là t'apprend surtout à utilise un appel système. Il aurait été possible d'afficher la chaine en faisant appel à la la libc (printf).
Je te conseille d'apprendre à additionner des choses, à adresser la mémoire et à gérer la pile (push, pop) c'est a le plus important.
Ensuite il y a plusieurs assembleurs, le 16 bits en mode réel (pour développer des OS), le 32 en mode protégé comme je viens de te monter.
* N-clear retourne apprendre l'assembleur, parce qu'il de loin pas tout capté