begin process at 2010 02 09 21:10:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications ms-dos

 > APPLICATION "HELLO WORLD !" EN ASM

APPLICATION "HELLO WORLD !" EN ASM


 Information sur la source

 Description

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

  • 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
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 !


 Sources du même auteur

SQUELETTE DE BASE POUR UNE DÉMO

 Sources de la même categorie

Source avec une capture LECTURE CHAINE ET COMPARAISON[MASM] par w4kfu
Source avec une capture LECTURE TOUCHE CLAVIER[MASM] par w4kfu
Source avec Zip UN RESOLVEUR SUDUKO AVEC ASSEMBLEUR NASM par msavyo1
Source avec Zip TESTEUR DE COMPATIBILITTÉ VESA (SUPER VGA) par bofur
Source avec Zip COMMUNICATION SÉRIE RS232 AVEC INTERRUPTIONS par bouffa

Commentaires et avis

Commentaire de LordBob le 29/04/2004 18:40:14

je trouve que comment le code est écrit ne facilite pas la comprehension pour les debutants (personne pour qui apriorie est destiné cette source !!!)...

Commentaire de Bombela le 29/04/2004 23:01:21

Heu... Tu peux faire plus court...

MOV DX,Message
MOV Ah,9
INT 21h
                
xor ah, ah
INT 16h
                
RET

Message  DB "Hello World !$"

Commentaire de Bombela le 29/04/2004 23:02:02

J'ai oublié le "100h" ;)

Commentaire de Bombela le 30/04/2004 14:29:26

Zut !

C'est "ORG 100h" lol

Commentaire de tet2cochon le 30/04/2004 18:24:05

c'est vrai j'aurais l'optimiser encore un peu plus.
merci.

Commentaire de darkalpha le 10/05/2004 22:34:20

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

Commentaire de nihaoma le 20/05/2004 18:51:44

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

Commentaire de mythic_kruger le 27/08/2005 10:48:19

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

Tu peux remplacer $" par ",0

Commentaire de algori le 07/05/2006 21:53:42

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.

Commentaire de Bombela le 08/05/2006 15:06:23

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 ;)

@+

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales