APPLICATION "HELLO WORLD !" EN ASM

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 29 avril 2004 à 18:40
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008 - 8 mai 2006 à 15:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22321-application-hello-world-en-asm

Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
8 mai 2006 à 15:06
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 ;)

@+
cs_algori Messages postés 868 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 26 février 2008 1
7 mai 2006 à 21:53
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.
mythic_kruger Messages postés 241 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 10 novembre 2005
27 août 2005 à 10:48
Ca compile super avec NASM (et tous les compilateurs 16 bits)!
nasmw -f bin -o hello.exe hello.asm

Tu peux remplacer $" par ",0
cs_nihaoma Messages postés 140 Date d'inscription jeudi 2 mai 2002 Statut Membre Dernière intervention 2 février 2010
20 mai 2004 à 18:51
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
darkalpha Messages postés 7 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 12 mai 2004
10 mai 2004 à 22:34
Je désire débuter l'ASM et ... j'ai rien capté :D
qq1 serait généreux d'expliquer :s
tet2cochon Messages postés 3 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 30 avril 2004
30 avril 2004 à 18:24
c'est vrai j'aurais l'optimiser encore un peu plus.
merci.
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
30 avril 2004 à 14:29
Zut !

C'est "ORG 100h" lol
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
29 avril 2004 à 23:02
J'ai oublié le "100h" ;)
Bombela Messages postés 225 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 30 juillet 2008
29 avril 2004 à 23:01
Heu... Tu peux faire plus court...

MOV DX,Message
MOV Ah,9
INT 21h

xor ah, ah
INT 16h

RET

Message DB "Hello World !$"
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
29 avril 2004 à 18:40
je trouve que comment le code est écrit ne facilite pas la comprehension pour les debutants (personne pour qui apriorie est destiné cette source !!!)...
Rejoignez-nous