QQ1 est capable de m'expliquer ce code en mettant des commentaires :
;**************************
;* TP2 *
;**************************
DOSSEG
.MODEL small
.STACK 100h
.DATA
MsgChaine DB 'Chaine : ',13,10,'$'
MsgMin DB 'Chaine en Minuscules : ',13,10,'$'
MsgMax DB 'Chaine en Majuscules : ',13,10,'$'
MsgSpace DB 13,10,'$'
Compteur DB 0
Alire DB 20
Lu DB ?
Rang DB 20 DUP (?)
Temp DB ?
.CODE
mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET MsgChaine
int 21h
mov dx,OFFSET Alire
mov ah,0Ch ;Vider le buffer
mov al,0Ah
int 21h
mov ah,9
mov dx,OFFSET MsgSpace
int 21h
mov ah,9
mov dx,OFFSET MsgMax
int 21h
mov bx,0
Deb: mov ah,Lu
cmp ah,Compteur
je stop
mov ah,Rang[bx]
mov Temp,ah
cmp Temp,'A'
jb erreur
cmp Temp,'Z'
jbe maj
cmp Temp,'a'
jb erreur
cmp Temp,'z'
jbe min
jmp erreur
suite:
; mov ah,02h
; mov dl,Rang[bx]
; int 21h
inc bx
mov ah,Compteur
inc ah
mov Compteur,ah
jmp Deb
maj: mov ah,02h
mov dl,Temp
int 21h
jmp suite
min: sub Temp,32
jmp maj
erreur: jmp fin
stop:
mov ah,9
mov dx,OFFSET MsgSpace
int 21h
mov ah,9
mov dx,OFFSET MsgMin
int 21h
mov Compteur,0
mov bx,0
Deb1: mov ah,Lu
cmp ah,Compteur
je stop1
mov ah,Rang[bx]
mov Temp,ah
cmp Temp,'A'
jb erreur
cmp Temp,'Z'
jbe maji
cmp Temp,'a'
jb erreur
cmp Temp,'z'
jbe mini
jmp erreur
suite1:
; mov ah,02h
; mov dl,Rang[bx]
; int 21h
inc bx
mov ah,Compteur
inc ah
mov Compteur,ah
jmp Deb1
mini: mov ah,02h
mov dl,Temp
int 21h
jmp suite1
maji: add Temp,32
jmp mini
stop1:
fin: mov ah,4Ch
int 21h
END
C'est sensé lire une chaine de caractere saisie au clavier, puis des k'on appuie sur ENTRER, ca affiche cette meme chaine converti en MAJ pui minuscule