Bonjour,
Tout dépend du type de programmation que tu souhaites faire. Pour le 16 bits (qui devient passablement obsolète) tu peux aller voir sur le site de OPIE (opecheux.free.fr).
Pour la programmation windows, la référence est le site d'Iczelion (
[ Lien ]) avec une partie traduite par MORGATTE (
[ Lien ]).
Je te conseille également de trouver le jeu des différentes instructions assembleur.
Tu pourras trouver également des tas de bonnes choses sur
[ Lien ]
Quant aux deux instructions citées:
mov edx, dword ptr [esp+28] (équivalent Nasm mov edx,dword [esp+28])
regarde la valeur du registre esp (pointeur de pile), considère le résultat comme une adresse, rajoute 28 pour avoir une nouvelle adresse, puis met le contenu situé à cette adresse (un dword, soit 4 octets) dans le registre edx. En fait le contenu des 4 octets consécutifs pointés par [esp+28].
L'instruction push edx effectue les opérations suivantes:
L'adresse du sommet de pile est donnée par esp
push edx empile un dword (4 octets) de la façon suivante:
soustrait 4 à esp
place la valeur de edx à la nouvelle adresse pointée par esp;
Ainsi après le push edx tu auras:
[esp] correspondra à la valeur sauvegardée de edx
[esp+4] correspondra à la valeur précédemment empilée sur la pile (avant le push edx).
Typiquement tu trouveras:
push dword paramètre 2
push dword paramètre 1
call procédure
suite:
Procédure
push ebp
mov ebp,esp
; [esp] = ebp sauvegardé
; [esp+4] = adresse de suite (pour le retour)
; [esp+8] = paramètre 1
; [esp+12] = paramètre 2
; en fin de procédure il faut retourner au programme principal
mov esp,ebp
pop ebp
ret xx
;xx est le nombre d'octets dépilés au sortir de la procédure
; si xx = 0 alors c'est au programme appelant de vider les deux dwords (param 1 et 2)
;si xx = 8 (8 octets soit 2 dword) alors la pile est vidée par le sous programme stdcall
A+