Force une chaine en majuscule avec and

Contenu du snippet

Conversion d'une chaine en majuscule
Adresse de la chaine dans EDX avant l'appel de la routine
Aucune valeur de retour
La routine modifie la chaine, aucune copie!

Système de la conversion avec l'exemple du caractère 'a' :

code ASCII du 'a' 61h soit 01100001b
code ASCII du 'A' 41h soit 01000001b

La seule différence est le 5e bit qu'il faut forcer à 0 pour obtenir la majuscule à partir de la minuscule

AND caractere, 11011111b ; conserve tous les bits sauf le 5e forcés à 0

Bye
Bigbang

Source / Exemple :


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
; 
min2maj PROC 
; 
; Convertit une chaine de caractère  en Majuscules 
; 
; Paramètre:   EDX pointe sur la chaine 
; Retour:      (rien) 
; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

debut:    
   mov   al, BYTE PTR [edx] 

   cmp   al,0 
   je   short fin 
    
   cmp   al, 61h 
   jb   short inter 

   cmp   al, 7Ah 
   ja   short inter 

   and   al, 0DFh 
   mov  BYTE PTR [edx], al
inter: 
   inc   edx 
   jmp   short debut 
fin: 
   RET 

min2maj ENDP

Conclusion :


Je débute encore en ASM, alors merci de dire ce que vous pensez de cette routine.

Bigbang

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.