REP SCASB 32 bits

Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008 - 21 déc. 2003 à 21:29
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 - 5 janv. 2004 à 01:32
S'lut !

J'arrive pas à utiliser REP SCASB en 32 bits.

La boucle ne s'efectue qu' une fois dans tous les cas...

Un exemple :

STD ; on incrémente
mov ecx, 1024 ; Une boucle max de 1024
mov esi, MaChaine ; L'adresse de ma chaîne
xor eax, eax
mov al, 'A' ; Je cherche la lettre A
REP SCASB

En posant ma queqtion, j'ai pas ma doc.
Je sais plus si c'est ESI ou EDI...

j'aimerais utiliser SCASB qui est plus rapide que CMP quand même...

MERCI.

BOMBELA

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 déc. 2003 à 00:56
EDI
ceci dit SCASB est moins rapide en 32 bits qu'une boucle deroulee n'utilisant que eax,edx, ecx et cmp.
BruNews, ciao...
0
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
22 déc. 2003 à 16:40
Ah bon !

Ben ça alors !

Bon, je laisse tombé SCASB !

Vive l'asm !

Merci.

BOMBELA
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
5 janv. 2004 à 01:32
C'est bien EDI
SCASB ne peut pas s'utiliser en 32 bits si tu recherche un caractère à la fois.
Mais si tes caractères sont sur 32 bits c'est SCASD et la comparaison se fait avec EAX
De plus, EDI est décrémenté de 4 octets (avec STD)
Pour incrémenter c'est CLD qu'il faut utiliser
Et attention, SCAS utilise ES:EDI comme pointeur

Sinon BruNews a raison une boucle est plus rapide

Core Breaker :)
0
Rejoignez-nous