Application "hello world !" en asm

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 358 fois - Téléchargée 28 fois

Contenu du snippet

Voici mon tout premier programme sous DOS. Il affiche le trés célèbre texte "Hello World !" Idéal pour les débutants afin de comprendre les bases.
Il est optimisé (9 lignes) pour FASM le compilateur/linkeur freeware. En rajoutant quelques directives, il est compilable sous MASM16 et autres.
Voila un programme ultra simple et commenté. Notez que FASM ne s'embette pas avec des directives et autres instruction propriétère.
Vous pouvez le telecharger avec un EDI (AsmEditor 3.0) Fasm est inclue dedans et configurer dans l'EDI comme compilateur par default, il est disponnible sur http://www.astase.com Bon...stop la pub gratos et place au code source.

Source / Exemple :


ORG 100h                                  ;Donne la valeur 100h au pointeur d'instruction
               MOV DX,Message         ;Mets le texte de DB dans DX
               MOV Ah,9                    ;Utilise la fonction 9 de 21h qui affiche le texte situer a DX
               INT 21h                       ;Affiche le message a l'écran
               
               MOV Ah,0
               INT 16h                       ;Attends l'appuie sur une touche
               
               MOV AX,4C00h              ;Prepare la fin du programme, renvoie 0
               INT 21h                        ;Fin du programme

Message   DB "Hello World !$"        ;Mets le texte dans DB

Conclusion :


Voila, difficile de faire plus simple...
Bon coding a tous !

A voir également

Ajouter un commentaire

Commentaires

Messages postés
225
Date d'inscription
mardi 4 mars 2003
Statut
Membre
Dernière intervention
30 juillet 2008

XOR AH,AH est effectivement plus rapide.
En terme de taille d'octet, j'ai la flème de vérifier, mais bon, à pars pour un boot sector, c'est pas vital.

Le RET est donc fonctionnel pour un programme DOS .COM car il y a déjà les valeurs de retour de RET dans la pile pour terminer le programme. Dans le cas d'un programme DOS .EXE, il faudra effectivement utiliser :
MOV AX,4C00h
INT 21h

Quand je dis plus cours, c'est juste à cause du RET, qui remplace la deux lignes de sortie de code .EXE par une seule...

C'est donc une ligne de moins à taper ;)

@+
Messages postés
868
Date d'inscription
dimanche 26 décembre 2004
Statut
Membre
Dernière intervention
26 février 2008
1
Salut,

>>MOV AX,4C00h ;Prepare la fin du programme, renvoie 0
INT 21h ;Fin du programme

Un RET fais aussi bien l'affaire et, en plus, tu gagnes 4 octets.

>>MOV Ah,0
J'préfère XOR AH,AH.
Est-ce plus rapide... ?

Voir code de Bombela :
Plus court ? -> Je ne pense pas.
Messages postés
242
Date d'inscription
jeudi 8 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2005

Ca compile super avec NASM (et tous les compilateurs 16 bits)!
nasmw -f bin -o hello.exe hello.asm

Tu peux remplacer $" par ",0
Messages postés
140
Date d'inscription
jeudi 2 mai 2002
Statut
Membre
Dernière intervention
2 février 2010

Salut,

je vais peut etre (surrement meme) vous paraitre idiot, mais moi aussi je commence l'asm, alors j'ai pris ce code et j'ai fait un copier coller, puis ai essayer de le compiler (avec nasm) et là, le compilateur me dit que "Code or data emission to undeclared segment"

je me suis donc dis que y'avais une syntaxe de base à mettre en place (qui est tellement de bas que meme dans ce code pour "débutant" on ne l'aurait pas mit) j'ai donc utiliser les template de emu8086 et cette fois ca bloque sur la ligne MOV DX, Message ou il me dit que l'adresse est sur 8 bit alors qu'elle devrait etre sur 16 bits

y'a quelqu'un pour m'expliquer ?
merci d'avance
Messages postés
7
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
12 mai 2004

Je désire débuter l'ASM et ... j'ai rien capté :D
qq1 serait généreux d'expliquer :s
Afficher les 10 commentaires

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.

Du même auteur (tet2cochon)