Bonjour,
j'aimerais savoir si on peut programmer les flags du registre d'état, c'est-à-dire programmer le ZF et Carry etc...
Merci d'avance.
Version imprimable
Bonjour,
j'aimerais savoir si on peut programmer les flags du registre d'état, c'est-à-dire programmer le ZF et Carry etc...
Merci d'avance.
Bonjour,
On peut directement changer le contenu du registre de drapeaux (EFLAG) soit en l'extrayant et en changeant le(s) bit(s) souhaité(s) et en le remettant en place, soit en utilisant des instructions qui influent directement sur un bit particulier.
Pour extraire le contenu d'EFLAG et le remettre en place on dispose des instructions suivantes :
Un exemple (avec EFLAG = 0x247 ; donc CF = 1):Code:
1
2 LAHF, SAHF, PUSHF, PUSHFD, POPF, et POPFD.
EFLAG = 0x246 ; donc Carry Flag = 0Code:
1
2
3
4
5
6 PUSHFD ; pousse EFLAG sur la pile POP EAX ; EAX = EFLAG = 0x247 AND EAX, 3FEh ; (soit en binaire = 1111111110) => on ne garde pas CF. EAX = 0x246 PUSH EAX ; eax (0x246) sur la pile. POPFD ; "pop" le double mot sur la pile et remplace EFLAG (EFLAG = 0x246)
Pour les instructions affectant un drapeau en particulier on a :
Et... je crois que c'est tout, mais je ne suis pas sûr... :?Code:
1
2
3 CF (Carry Flag) : STC, CLC, et CMC (et BT, BTS, BTR, BTC qui écrivent sur le CF) DF (Direction Flag): STD et CLD
Voilà j'espère que ça répond à ta question. N'hésites pas si tu souhaites plus d'infos.
Bonjour,
je tiens a te remercier pour ces détails, j'apprécie beaucoup, et je dirais que pour le moment ça répond à mes besoins car c'était juste des questions que je me posais car je debute dans ce langage, c'est pour réunir un ensemble de données avant de commencer a programmer.
Je ne veux pas aussi abuser de ton temps, seulement si tu connais un bon site là où je pourrais m'inspirer de quelques codes et exemples, ça serait vraiment sympa de ta part.
Merci d'avance.