Effacer un vecteur de caractere

RootASM Messages postés 17 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 4 avril 2006 - 25 janv. 2006 à 15:23
RootASM Messages postés 17 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 4 avril 2006 - 26 janv. 2006 à 15:26
Bonjour,


J'ai utliser un vecteur que j'ai declarer comme suit : vec1 250, ?, 251 dup('$')


J'aimerais pouvoir effacer tout son contenu. J'ai vu la fonction 0Ch mais je ne sait pas comment l utiliser.
Mais si vous connaissez une autres pour moi c'est la meme chose.

Merci

2 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
25 janv. 2006 à 18:30
salut,


lea eax,[vec1]
mov ecx,251+2
@@:
mov byte ptr[eax+ecx-1],0
loop @B

@++
0
RootASM Messages postés 17 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 4 avril 2006
26 janv. 2006 à 15:26
Voila mon programme si vous pouviez tester. Je n'arrive pas a trouver mon erreur.

Lorsque je recommence il prend en compte des lettres qu'il ne devrait pas.

;Duszynski 19/12/2005
;Dimitri
;2121


.MODEL SMALL
.STACK
.DATA

titre DB "PALINDROME$"
slign DB "----------$"
carintro DB "Entrer une chaine de caracteres : $"
carchaine DB "La chaine de caractere est $"
carjuste DB "LA CHAINE QUE VOUS AVEZ ENTREE EST UN PALINDROME !$"
carsym DB "La symetrie de la chaine est $"
carfaux DB "LA CHAINE QUE VOUS AVEZ ENTREE N'EST PAS UN PALINDROME !$"
recommencer DB 'Appuyer sur ENTER pour recommencer ou sur ESC pour arreter$'
mot1 DB 250, ?, 251 dup ('$')
mot2 DB 250 dup('$')


.CODE

MAINPROG :

MOV AX, @DATA
MOV DS, AX


MOV AH, 0Fh
INT 10h


MOV AH, 0h
INT 10h


MOV DH, 3
MOV DL, 30
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, titre
INT 21h


MOV DH, 4
MOV DL, 30
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, slign
INT 21h

MOV DH, 6
MOV DL, 0
MOV AH, 02h
INT 10h
MOV AX, 0900h
LEA DX, carintro
INT 21h

MOV AH, 0Ch
MOV AL, 0Ah
LEA DX, mot1
INT 21h

MOV SI, 2
MOV DI, 0

COMPARAISON:


CMP mot1[SI], '$'
JE VEC2

CMP mot1[SI], 30h
JB PONCTU
CMP mot1[SI], 39h
JBE VEC2

CMP mot1[SI], 41h
JB PONCTU
CMP mot1[SI], 5Ah
JBE VEC2

CMP mot1[SI], 61h
JB PONCTU
CMP mot1[SI], 7Ah
JBE VEC2

CMP mot1[SI], 82h
JB PONCTU
CMP mot1[SI], 97h
JBE VEC2

PONCTU:


INC SI
JMP COMPARAISON


VEC2:


MOV AL, mot1[SI]
MOV mot2[DI], AL
CMP mot2[DI], '$'
JE FIN1
INC SI
INC DI
JMP COMPARAISON


FIN1:

MOV DH, 8
MOV DL, 0
MOV AH, 02h
INT 10h

MOV AX, 0900h
LEA DX, carchaine
INT 21h

MOV DH, 8
MOV DL, 27
MOV AH, 02h
INT 10h

MOV AX, 0900h
LEA DX, mot2
INT 21h


MOV SI, 0


PALIN:


CMP SI, DI
JBE COMP_SI
PUSH SI
JMP FIN2


JMP_DI:

JMP COMP_DI

JMP_MAJU:


JMP MAJUSC_SI

COMP_SI:


CMP mot2[SI], 61h
JB JMP_DI
CMP mot2[SI], 7Ah
JBE JMP_MAJU

CMP mot2[SI], 82h
JE E_SI

CMP mot2[SI], 83h
JE A_SI

CMP mot2[SI], 84h
JE A_SI

CMP mot2[SI], 85h
JE A_SI

CMP mot2[SI], 88h
JE E_SI


CMP mot2[SI], 89h
JE E_SI


CMP mot2[SI], 8Ah
JE E_SI


CMP mot2[SI], 8Bh
JE I_SI


CMP mot2[SI], 8Ch
JE E_SI

CMP mot2[SI], 8Dh
JE E_SI


CMP mot2[SI], 93h
JE O_SI

CMP mot2[SI], 94h
JE O_SI

CMP mot2[SI], 95h
JE O_SI


CMP mot2[SI], 96h
JE U_SI

CMP mot2[SI], 97h
JE U_SI

A_SI:
MOV mot2[SI], 'A'
JMP COMP_DI
E_SI:
MOV mot2[SI], 'E'
JMP COMP_DI
I_SI:
MOV mot2[SI], 'I'
JMP COMP_DI
O_SI:
MOV mot2[SI], 'O'
JMP COMP_DI
U_SI:
MOV mot2[SI], 'U'
JMP COMP_DI

MAJUSC_SI:


SUB mot2[SI], 20h
JMP COMP_DI


JMP_VERIF:

JMP VERIF


MAJUSC:


JMP MAJUSC_DI


COMP_DI:


CMP mot2[DI], 61h
JB JMP_VERIF
CMP mot2[DI], 7Ah
JBE MAJUSC

CMP mot2[DI], 82h
JE E_DI

CMP mot2[DI], 83h
JE A_DI

CMP mot2[DI], 84h
JE A_DI

CMP mot2[DI], 85h
JE A_DI

CMP mot2[DI], 88h
JE E_DI


CMP mot2[DI], 89h
JE E_DI


CMP mot2[DI], 8Ah
JE E_DI


CMP mot2[DI], 8Bh
JE I_DI


CMP mot2[DI], 8Ch
JE E_DI

CMP mot2[DI], 8Dh
JE E_DI


CMP mot2[DI], 93h
JE O_DI

CMP mot2[DI], 94h
JE O_DI

CMP mot2[DI], 95h
JE O_DI


CMP mot2[DI], 96h
JE U_DI

CMP mot2[DI], 97h
JE U_DI

A_DI:
MOV mot2[DI], 'A'
JMP VERIF
E_DI:
MOV mot2[DI], 'E'
JMP VERIF
I_DI:
MOV mot2[DI], 'I'
JMP VERIF
O_DI:
MOV mot2[DI], 'O'
JMP VERIF
U_DI:
MOV mot2[DI], 'U'
JMP VERIF

MAJUSC_DI:


SUB mot2[DI], 20h


VERIF:


MOV AL, mot2[SI]
CMP mot2[DI], AL
JNE FIN3
INC SI
DEC DI
JMP PALIN

FIN2:


MOV DH, 10
MOV DL, 0
MOV AH, 02h
INT 10h


MOV AX, 0900h
LEA DX, carjuste
INT 21h


MOV DH, 12
MOV DL, 0
MOV AH, 02h
INT 10h

MOV AX, 0900h
LEA DX, carsym
INT 21h


MOV DH, 12
MOV DL, 29
MOV AH, 02h
INT 10h

POP SI
MOV mot2[SI], '$'

MOV AX, 0900h
LEA DX, mot2
INT 21h

JMP RECOMMENCE


FIN3:


MOV DH, 9
MOV DL, 0
MOV AH, 02h
INT 10h


MOV AX, 0900h
LEA DX, carfaux
INT 21h

RECOMMENCE:


MOV DH, 15
MOV DL, 5
MOV Ah, 02h
INT 10h

MOV AX, 0900h
LEA DX, recommencer
INT 21h

MOV AH, 01h
INT 21h

CMP AL, 1Bh
JE QUIT
JMP MAINPROG

QUIT:

MOV AX, 4C00h
INT 21h


END
0
Rejoignez-nous