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