| |
|
|
![funkheld: 18.04.2012](.././../../i/a/noavatar.gif) funkheld | allô, guten journée, j'ai un Problem. pourquoi venez unten cela Ergenis 6 raus? si je qui Whilelloop rausnehme venez richtig 9 raus.
merci. Gruss
|
|
|
| |
|
|
|
![iF: 18.04.2012](.././../../i/a/1.gif) | Du musst en sortir, dass Windows-APIs aussi XPSE-Funktionen aussi Kontrollstrukturen qui ASM-Registerwerte changement weil vous avec ihnen travailler.
voudrais on avec cette Werten travailler ensuite sollte on vous z.B. avec push et pop sichern/ wiederherstellen. chez manchen APIs ist ca sogar explizit notwenwie z.B. chez LineDDA ou bien manch anderen ENUM-Procs.
Würdest Votre Boucle alors pour cmp bzw. test et jmp bzw. jle ou bien jl ajuster - alors sans Tandis que, ensuite würden aussi qui Registerwerte pas beeinflusst ou bien nutze plan push et pop.
Incidemment... je pour dem quoi einem liegt...
tu peux naturellement:
écrivons mais genauso aussi:
cela gilt pour procs comment pour nprocs. |
|
|
| |
|
|
|
![funkheld: 18.04.2012](.././../../i/a/noavatar.gif) funkheld | Hmm.., avec push et pop ändert sich cela Ergebnis pas.
Gruss
|
|
|
| |
|
|
|
![iF: 18.04.2012](.././../../i/a/1.gif) | cela WhileLoop et Wend utilise ebenso mindestens eax et ebx,
si ensuite müsstest dein add eax,ebx abkapseln mais tu peux wiederum aussi pas en sortir dass cela tandis que den ebx Wert inchangé dans qui Boucle durchlässt.
dans diesem le cas eignet sich cela Mischen avec ASM pas. cela wiederum ist wohl chez allen "ehrlichen" nativen Programmiersprachen qui le cas et plan aussi so chez Windows-APIs um un plus à Geschwindigkeit trop erreichen bzw. um pas unnötig Registerwerte trop sichern.
Du könntest mais Votre Boucle (alors cela tandis que Wend) aussi komplett pour asm umsetzen (comment dessus geschrieben) avec cmp bzw. test(-asm)-Anweisungen.
si tu écris quoi oui c'est ca Du erreichen vouloir ensuite peux je Dir den ASM en supplément aussi aufschreiben. |
|
|
| |
|
|
|
![iF: 18.04.2012](.././../../i/a/1.gif) | encore un kleiner TIP: peux Du komplett laisser tomber là qui Rückgabewert qui dans EAX abgelegte Wert ist. So aussi chez Windows-APIs. |
|
|
| |
|
|
|
![funkheld: 18.04.2012](.././../../i/a/noavatar.gif) funkheld | Jup, merci. eax habe je rausgelassen, maintenant funktioniert es.
mais cet funktioniert pas avec qui typischen MASM ou bien JWASM-SChleife:
qui XPIA kennt cet typische Boucle wieder.
Gruss |
|
|
| |
|
|
|
![funkheld: 18.04.2012](.././../../i/a/noavatar.gif) funkheld |
cmp bzw. test et jmp bzw. jle ou bien jl
si du la fois s'il te plaît une ASM-Demo faire könntest pour XPSE, welches une si-Boucle, une Whileloop-Boucle et une Tandis que-Boucle darstellt, avec cela pourrait je ensuite viel avec anfangen.
merci.
Gruss |
|
|
| |
|
|
|
![iF: 19.04.2012](.././../../i/a/1.gif) | demain,
comment ici ( [...] ) bereits geschrieben peux Du si, tandis que, whileloop simple direct verwenden sans qui deutlich schmächtigere High-Level-Syntax (HLS) de jwasm.
un paire plakativ-gestaltete ASM-Beispiele pour si, tandis que et Zählschleife sans HLS könnten so air:
{$cleq}
nProc test.ifgleich
parameters v&,w&
mov eax,1
mov ebx,v&
mov ecx,w&
cmp ebx,ecx
je uebersprung
mov eax,0
uebersprung:
endproc
nProc test.ifkleiner
parameters v&,w&
mov eax,1
mov ebx,v&
mov ecx,w&
cmp ebx,ecx
jl uebersprung
mov eax,0
uebersprung:
endproc
nProc test.whileZaehle
parameters v&
mov ebx,v&
xor ecx,ecx
anfang:
add ecx,1
'schleifenkörper, ecx ist ici 1 jusqu'à 10
cmp ecx,ebx
jge uebersprung
jmp anfang
uebersprung:
mov eax,ecx
endproc
cls
imprimer test.ifgleich(9,10)
imprimer test.ifgleich(10,10)
imprimer test.ifkleiner(9,10)
imprimer test.ifkleiner(10,10)
imprimer test.whileZaehle(10)
waitInput
end
et gibt aus:
0 1 1 0 10 ![](.././../../i/c.gif) wobei plan ca ici oui selbes Ergebis liefert:
et ca ici une optimiertere variante en ist:
et es encore kürzer allez:
et es aussi encore "cooler" allez:
Hoffe hilft. |
|
|
| |
|
|
|
![funkheld: 19.04.2012](.././../../i/a/noavatar.gif) funkheld | oui merci, cela sieht oui bien aus. ce sont belle Beispiele, qui je bien anwenden peux.
merci.
Gruss |
|
|
| |
|
|