1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| .model small
.stack 100h
.data
chaine db 10,13,"je veux seulement tester$"
msg3 db 10,13,"la longueur du mot le plus long est:$"
msg6 db 10,13, "le mot le plus long dans votre chaine est:$"
indice_mot dw 0
t_max dw 0
i db 0
j dw 0
l dw 24
taille dw 24
motpl db 80 dup('$')
Mot db ?
moc db 0
lmotpl dw 0
.code
start:
xor dx,dx
xor bx,bx
xor cx,cx
xor si,si
mov si,offset chaine
mov di,offset mot
mov bx,1
debut_de_boucle:
mov al,Chaine[si]
cmp taille,bx
jl fin_boucle
mov dx,bx
debut_de_boucle2:
cmp taille,dx
jg fin_boucle2
cmp al,' '
je fin_boucle2
mov Mot[di], al
inc dx
inc moc
jmp debut_de_boucle2
fin_boucle2:
mov ch,moc
mov cl,b.t_max
cmp ch,cl
jle finsi
call copy
finsi:
inc si
jmp debut_de_boucle
fin_boucle:
mov ah,9
mov dx,offset msg6
int 21h
mov ah,9
mov dl,motpl
int 21h
copy proc
LEA SI,mot+2
LEA DI,motpl+2
MOV CL,mot+1
MOV CH,00H
LAB1:
MOV AL,DS:BYTE PTR[SI]
MOV DS:BYTE PTR[DI],AL
INC DI
INC SI
LOOP LAB1
endp
end start |
Partager