label - ASM - Programmation
Marsh Posté le 07-12-2004 à 01:18:46
ça permet de donner un nom humaine compréhensible à une adresse utilisée pour faire des sauts/appels de fonctions.
exemple c:
int fonction( int a)
{
/* on limite 'a' à 20 */
if( a > 20 )
a=20;
/* on retourne a*10 */
return a*10;
}
main()
{
int p;
....
p=
...
p=fonction(p);
}
en asm x86 avec une convention d'appel dans les registres:
PROC NEAR fonction ; A est dans eax
push edx // sav edx dû au imul
push ebx // sav ebx
cmp eax,20 // comparaison par rapport à 20
jle A_OK // jle: jump if lower or equal, sauter si inférieur ou égal, l'inverse de "supérieur"
mov eax,20
A_OK:
mov ebx,10 // multiplication par 10
imul ebx // edx:eax est modifié
pop ebx // restauration ebx
pop edx // restauration edx
ret // retour à l'appellant, a*10 est dans eax
ENDP
est dans le code de main, se serait:
...
...
mov eax,p
call fonction
mov p,eax
....
....
Marsh Posté le 07-12-2004 à 00:46:37
Salut,
Quelqu'un pourrait me dire l'utilité d'un label.
A+ David