Vous êtes sur la page 1sur 2

USTHB/ FEI/GTR401/L2/S4 Mme Bentoumi

C5a: Instructions de chaines de cacactères


1.Introduction :
Certaines instruction permettent un transfert ou une comparaison rapide de chaines de
caractères :Les opérations interviennent toujours entre deux zones mémoire, la première est
appelée : " chaîne source " et la seconde " chaîne destination ".
La chaîne source est toujours être pointée par le registre DS
la chaîne destination par le registre ES.
Quelle que soit l'opération (consultation, modification, comparaison,...), elle sera exécutée
caractère par caractère. Il faudra donc maintenir un registre indiquant où en est le remplissage
ou la comparaison de chaque chaîne : SI pour la chaîne source et DI pour la chaîne
destination.

2. Transfert :

LODSB, LODSW (Load String Byte, Word), ces instructions chargent les registres AL, AX
avec un élément d'une chaîne pointée par DS:SI (opérande source). Après l'opération, le
registre d'index SI est automatiquement incrémenté ou décrémenté de 1, 2

AL, AX  [DS : SI] et SI = SI+1 ou +2

Exemple1 :
ORG 100h
AL = DS:[SI] LEA SI, a1
MOV AH, 0Eh
si DF = 0 alors MOV CX, 5
SI = SI + 1 m: LODSB
sinon INT 10h
SI = SI - 1 LOOP m
RET a1 DB 'G', 'T',’R’

Remarque :
CLD :Positionne le Drapeau D à 0
STD :Positionne le Drapeau D à
. STOSB, STOSW (Store String Byte, Word), ces instructions chargent l'élément d'une chaîne
pointée par ES : EDI (opérande destination)avec le contenu des registres AL, AX. Après
l'opération, le registre d'index DI est automatiquement incrémenté ou décrémenté de 1, 2 ou 4.
[ES : DI]  AL, AX et DI = DI+1 ou +2

MOVSB et MOVSW (Move String Byte, Word), ces instructions transfèrent un octet ou un
mot de la zone mémoire pointée par DS : SI vers la zone mémoire pointée par ES : DI, ces
registres doivent donc être correctement initialisés.
Après l'opération, les registres d'index DI et SI sont automatiquement incrémentés ou
décrémentés de 1, 2 ou 4. Et (les registres AL, AX ne sont pas affectés.
[ES : DI]  [DS : SI] et DI =DI+1 ou +2, SI = SI+1 ou +2
Exemple2 :

lea si ,a1 movsb


lea di ; a2 ret
movsb a1 db 1,2,3
movsb a2 db 3 dup (0
USTHB/ FEI/GTR401/L2/S4 Mme Bentoumi

C5a: Instructions de chaines de cacactères


3. Comparaison :

CMPSB et CMPSW (Compare String Byte et Word), ces instructions comparent un élément
(un octet ou un mot) de deux chaînes de caractères, le premier étant pointé par DS : SI et le
second par ES : DI.
Ces instructions affectent les indicateurs pour indiquer le résultat de la comparaison.
Après l'opération, les registres DI et SI sont automatiquement incrémentés ou décrementés

SCASB, SCASW (Scan String Byte, Word), ces instructions comparent un élément (un octet,
deux octets) d'une chaîne de caractères pointée par ES:DI avec le contenu de AL, AX
Ces instructions seront utilisées pour rechercher un caractère dans une chaîne.
Après l'opération, le registre DI est automatiquement incrémenté ou décrémenté de 1ou2

4. Répéter les instructions :


Le nombre de répétitions sera préalablement placé dans le registre CX. Elle n'est valable que
pour les opérations sur les chaînes de caractères.
REP instruction, elle répète l'instruction présente comme opérande un certain nombre de
fois.
On peut reecire l’Exemple2 : en ajoutant MOV CX,3 …..REP MOVSB au lieu des 3 "movsb

REPE instruction, elle répète l'instruction présente comme opérande un certain nombre de
fois et ce tant que :
[DS : SI] = [ES : DI] et que la valeur du registre CX est différente de 0..

REPNE instruction, elle répète l'instruction présente comme opérande un certain nombre de
fois et ce tant que :
[DS : SI]  [ES : DI] et que la valeur du registre CX est différente de 0..

Vous aimerez peut-être aussi