rebixav
Messages postés130Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention28 janvier 2013
-
17 avril 2012 à 15:48
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
20 avril 2012 à 15:38
Voilà mon problème, je débute en assembleur et je l'utilise essentiellement pour créer des procédure pour visual basic ou C
voici une de mes procédure (ne regarder pas le code elle plante, et c'est afreusement complexe de la réparer), et j'aimerais pouvoir utiliser des variable, tel que saut:word , nb_octets:word , etc...
j'ai vue cela :
Nom_Tableau2 DW 0 Dup (125) pour initialiser un tableu de 125 double mots
initialisé à 0 !
Mais ensuite comme l'utiliser "Assume Cs : Code, Ds : Data" fait planter
peut-être parce que j'utilise ESI et EDI !
...
BREF j'espère tombé sur un programmeur en assembleur, je sais qu'il
pourra me répondre rapidement, car moi je fait tout planter ...
ma procédure :
rgb_resize proc export rgb_source:ptr,rgb_desti:ptr,lx:word,ly:word
PUSH ESI
PUSH EDI
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
mov ax,ly
mov esi,rgb_source
mov edi,rgb_desti
add edi,12
mov ax,lx
mov ecx,[esi]
mov eax,4
mov eax,ecx
mul eax
mov ecx,eax
dec ecx
cmp ecx,0
jne LIGNE_1
mov ecx,1
LIGNE_1:
mov ax,lx
mov edx,[esi]
push ecx
mov cx,lx
mov eax,ebx
div ecx
mov ebx,eax
pop ecx
cmp ebx,1
jae LIGNE_2
mov ebx,1
LIGNE_2:
inc esi
rebixav
Messages postés130Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention28 janvier 2013 19 avril 2012 à 23:43
merci cela marche !
j'ai enfin des variable et avec :
a2 equ word ptr[esp+4]
ma variable s'appelle bien a2
donc exemple :
push esi
push edi
...
sub esp, 12
a1 equ dword ptr[esp+0]
a2 equ word ptr[esp+4]
a3 equ dword ptr[esp+6]
mov eax,a2
...
...etc.
add esp, 12 ;<<< sinon les pop vont avoir mal
...
pop edi
pop esi
En fait j'y avais penser d'utiliser le compteur des push et pop(ESP), mais je ne sais pas la peur de l'écran BLEU !!!
merci beaucoup !
par contre juste comme cela, tu n'as pas peur que la pile soit pleine ,... on est pas dans la mémoire vive là, c'est pas de la vrai mémoire alloué ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 avril 2012 à 09:10
rgb_resize proc ; ET RIEN D'AUTRE
A toi de gerer la recup des params (offset ESP ou registre).
Remonter ESP en sortie (RET xxx).
EBX est a sauvegarder.
Assume ... RIEN DU TOUT, sous Windows nous sommes en FLAT model.
etc, etc.
Tu trouveras des tas de mes sources C (sur cppfrance) qui contiennent de l'ASM.
rebixav
Messages postés130Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention28 janvier 2013 19 avril 2012 à 11:40
Heuuu !
je suis pas sure que tu as compris en faite j'aimerais avoir des variable en plus dans mon ASM, pour travailler mon code !
exemple :
au lieu de :
rebixav
Messages postés130Date d'inscriptiondimanche 16 décembre 2007StatutMembreDernière intervention28 janvier 2013 20 avril 2012 à 09:58
Est ce que l'on peut préparer en Routine ASSEMBLEUR un tableau mémoire de plusieurs Mo, donc sans utilisé la pile, en faite préparer un espace mémoire comme Visual BASIC !