MASM32 Library
Voici un élément de Masm que nous Français n'utilisons que très rarement alors que nos homologues
Américains ne s'en privent pas. C'est la 'Library'. Ça va être très court, le but n'est que de vous
faire prendre conscience de sa présence.
Sachez qu'au fur et à mesure des évolutions de Masm32 cette Bibliothèque comme le reste s'enrichie.
Et le mieux est encore d'aller faire un petit tour sur l'exellent site de HUTCH à l'adresse:
http://www.pbq.com.au/home/hutch/masm.htm
Nous savons tous comment utiliser les Fonctions API de windows avec la MACRO 'invoke'.
Et bien la Library permet de faire la même chose, avec des Fichiers créés par nous mêmes, un peu comme
si nous pouvions fabriquer et faire appel à nos propres APIs personnelles.
EXEMPLE CONCRET:
Un contrôle d'édition est une zone où on peut écrire des caractères, soit du TEXTE soit des CHIFFRES. Mais
n'importe quel caractère qu'il contient est en fait considéré comme du texte (même les chiffres). Si vous
souhaitez utiliser les chiffres que vous y inscrivez en tant que véritables chiffres il vous faudra les
convertir. Et aucune API Win32 ne le permet.
La solution, c'est de faire appel à une 'Pseudo API' qui a été créée par un utilisateur comme vous
et moi. Chacun peut créer les siennes.
PETIT BOUT DE CODE POUR UTILISER LA LIBRARY :
..
...
include \masm32\include\kernel32.inc ;<-- Kernel32 est une véritable Bibliothèque Win32
includelib \masm32\lib\kernel32.lib ;on l'importe ainsi.
include \masm32\include\masm32.inc ;<-- La Bibliothèque masm32 n'est pas une Bibliothèque appartenant à Windows.
includelib \masm32\lib\masm32.lib ;elle a été créer par des utilisateurs, mais on l'appel de la même façon.
.data
nombre db "255",0 ;<-- Ce nb 255d est en réalité au format TEXTE.
.data ?
buffer dd ? ;<-- ce buffer recevra le véritable nombre 255 converti. donc 0FFh
.code
invoke atodw, addr nombre ;<-- Converti mon texte en un véritable nombre hexadécimal.
mov buffer, eax ;<-- le résultat est pacé dans eax.
...
EXPLICATION :
De la même façon qu'on déclare la (véritable) bibliothèque Kernel32.dll pour se servir de certaines de
ses APIs comme ExitProcess, on déclare également la bibliothèque Masm32 pour nous servir des (fausses)
APIs qu'elle contient tel que 'atodw' entre autres.
ExitProcess proto uExitCode:DWORD
atodw proto String:BYTE
J'espère que vous avez compris l'intérêt de la Library car elle nous permet de faire évoluer Masm en lui
ajoutant des 'Pseudo-APIs' qui peuvent être bénéfiques pour tous.
Je vous recommande de jeter un petit coup d'oeil dans '..\Masm32\Help\Masmlib.HLP' pour savoir qu'elle est
la syntaxe de chacune de ces nouvelles 'Pseudo-APIs' ainsi que ce qu'elles permettent de faire.
CRÉATION D'UNE LIBRARY PERSONNELLE :
Quand je me suis intéressé aux Bibliothèques, je me suis aperçu entre temps qu'Iczelion y avait également
consacré un peu de son temps. Alors je vais m'arrêter ici, et vous traduire son texte. Vu qu'il est extrêmement
technique dans toutes ses explications ce sera aussi bien pour tout le monde....
Morgatte