Il a été montré dans un article précédent qu’on pouvait programmer un “Hello World” sous invite de commandes en assembleur x86 avec le couple NASM-GoLink.
On peut obtenir ce même résultat avec l’ancien assembleur tasm32 et le Free Borland C++ Command-Line Tools. Cette solution est moins bonne que la précédente car ces utilitaires sont en principe obsolètes en 2025 mais je l’indique néanmoins à tout hasard. Il faut donc trouver sur la Toile Électronique Géante et télécharger le turbo assembleur tasm32.exe et également l’exécutable freecommandlinetools.exe ou un nom approchant qui va installer une série d’utilitaires qu’on pourra invoquer dans les commandes en ligne. En principe, cette suite de fichiers va s’installer automatiquement dans
C:\Program Files\Borland\BCC55
Dans le répertoire BCC55, il y aura notamment deux sous-répertoires, d’une part, Bin, qui contiendra le lieur ilink32.exe, et, d’autre part, PSDK, qui contiendra kernel32.lib, ce qui se vérifiera aisément sous Windows après installation.
Tout étant désormais dûment installé comme indiqué ci-dessus, on crée un répertoire de travail e.g. asm3, puisque l’article précédent avait déjà créé asm1 et asm2. Dans ces conditions, tout est prêt pour écrire hello.asm pour ce nouvel environnement. Le code assembleur qui affiche Hello sur la console peut se concevoir comme suit.
; hello.asm — Hello console Win32 (TASM32)
.386
.model flat, stdcall
option casemap:none
; ---- API Win32 ----
EXTERN GetStdHandle : PROC
EXTERN WriteConsoleA : PROC
EXTERN ExitProcess : PROC
STD_OUTPUT_HANDLE equ -11
.data
msg db "Hello", 13, 10
msglen equ $ - msg
written dd ?
.code
start:
push STD_OUTPUT_HANDLE
call GetStdHandle
push 0
push OFFSET written
push msglen
push OFFSET msg
push eax
call WriteConsoleA
push 0
call ExitProcess
END start
On fait un copier-coller de ce programme dans le petit Notepad et l’on sauvegarde ce fichier sous le nom hello.asm dans notre répertoire de travail asm3. On se rend maintenant sous invite de commandes dans le répertoire asm3, ce qui se fait par la commande cd (change directory).
cd C:\chemin\vers\asm3
Si certains noms intermédiaires comportent des espaces, le chemin doit alors être écrit entre guillemets, ce qui donne quelque chose de ce genre.
cd "C:\chemin vers\asm3"
On est maintenant dans le répertoire asm3 où se trouve le fichier hello.asm, ce qu’on peut vérifier par la commande dir qui affiche le contenu du dossier courant. Dans ces conditions, la compilation se fait comme suit, toujours dans le répertoire de travail asm3.
"C:\chemin\vers\tasm32.exe" /ml hello.asm
étant supposé que le turbo assembleur tasm32.exe se trouve dans le répertoire
C:\chemin\vers
Cette opération va créer le fichier hello.obj dans le répertoire de travail asm3, ce qui peut se vérifier par la commande dir. Comme les commandes en ligne qui ont été préalablement installées par l’exécutable freecommandlinetools.exe vont en principe se trouver dans le répertoire
C:\Program Files\Borland\BCC55
l’instruction de liaison va s’écrire comme ceci sous invite de commandes dans le répertoire de travail asm3.
"C:\Program Files\Borland\BCC55\Bin\ilink32.exe" -Tpe -L"C:\Program Files\Borland\BCC55\Lib\PSDK" hello.obj, hello.exe,, kernel32.lib
Les guillemets sont nécessaires du fait que “Program Files” contient un espace. Sous Windows, ce répertoire s’appelle sans doute en français Programmes d’un seul tenant mais il n’est pas certain que l’invite de commandes soit paramétrée en ce sens, d’où l’écriture précédente qui exclut toute ambiguïté.
L’exécutable hello.exe a été créé, ce qui se vérifie par la commande dir, toujours dans le répertoire de travail asm3, et peut être appelé par hello, ce qui donne quelque chose de ce genre.
C:\chemin\vers\asm3>hello
Hello
C:\chemin\vers\asm3>
En conclusion, les utilitaires tasm32 et ilink32, quoique très anciens, sont toujours fonctionnels en 2025, à condition de bien savoir installer cet environnement.