Non, je suis obliger de changer ds, car il pointe a un autre endroit que le segment ou se trouve mon code(J'ai esseiller, et j'aterit sur un autre endroit de la mémoire)
Non, je suis obliger de changer ds, car il pointe a un autre endroit que le segment ou se trouve mon code(J'ai esseiller, et j'aterit sur un autre endroit de la mémoire)
Mes articles Développez | Dernier article : Raytracer en haskell
Network library : SedNL | Zenol's Blog : http://zenol.fr
N'oubliez pas de consulter la FAQ et les cours et tutoriels.
Tu peux nous montrer le programme complet s'il te plaît ?
Le code est précèder de Format MZ
Sinon c'est la même chose.
Mes articles Développez | Dernier article : Raytracer en haskell
Network library : SedNL | Zenol's Blog : http://zenol.fr
N'oubliez pas de consulter la FAQ et les cours et tutoriels.
Désolé (j'ai peut-être raté un message) mais je n'ai pas vu de code presque complet posté par toi...
De toute façon ce sera beaucoup mieux d'avoir le code complet, on aura une vue d'ensemble, parce jusque là je n'arrive pas très bien à me représenter ton programme...
Poste-le s'il te plaît (à moins que je l'ai raté bien sûr).
Je ne l'ai aps poster, c'est sa :
(Oui je n'en suis pas encore a faire des programmes fonctionnels ^^)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Format MZ mov ah, 09h mov dx, Message int 21h db message "blablabla"
Mes articles Développez | Dernier article : Raytracer en haskell
Network library : SedNL | Zenol's Blog : http://zenol.fr
N'oubliez pas de consulter la FAQ et les cours et tutoriels.
Ton code est un peu contradictoire...
Le "Format MZ" demande à FASM de créer un exe DOS.
Seulement, pour commencer, on veut simplement créer un com (attention fais bien la différence, le fichier de sortie d'un com peut très bien avoir l'extension .exe ou .com, ne te mélange pas les pinceaux, ce n'est pas parce que le fichier de sortie a l'extension .exe que tu fais un exe DOS...).
Donc pour commencer on va plutôt essayer un com :
-Il faut que tu enlèves le "Format MZ"
-Et il faut que tu rajoutes "Org 100h' au début du code
Cette org 100h demande à FASM de décaler toutes les adresses de ton programme de 256 octets (100h) pour laisser la place au PSP créé par le DOS (si tu ne sais pas trop ce que c'est contente toi juste de mettre 'Org 100h' pour l'instant).
Ensuite ton code modifié comme cela afficherait bien le message, mais ensuite un énorme bug appraîtrait : ton Message db "blablabla" est déclaré juste après l'appel à l'int 21h, et rien ne demande au programme de s'arrêter, le processeur va donc continuer tranquillement et interpréter ton 'message' comme du code machine ! C'est un très bon moyen pour planter l'ordi !
De plus tu as oublié le caractère '$' qui doit terminer tout message affiché à l'acran par le DOS (ce caractère ne sera pas affiché).
Si tu travailles sous une version Windows à partir de Win 2000 (je crois) tu ne risques rien car il y a un émulateur de DOS qui arrêtera ton prog buggé (enfin en principe, on est jamais certain c'est MS...).
Donc il faut appeler une Int pour terminer le prog (l'Int 20h ne fonctionne que pour les com, il vaut mieux utiliser l'Int 21h --> 4C00h de toutes façon)
Accessoirement on rajoute aussi un appel à l'Int 21h-->08h pour avoir le temps de voir le message^^.
Donc au final :
Voilà !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 org 100h mov dx, Message ;L'adresse est calculée par rapport ;au segment par défaut de la variable mov ah, 09h ;Int 21h, service 09h int 21h ;Affichage d'un message terminé ;par le caractère '$' mov ah, 08h ;Pour qu'on ait le temps de voir les int 21h ;messages^^. Ce service attend qu'une ;touche clavier soit pressée mov ax, 4C00h ;Int pour terminer le programme int 21h Message db 'Hello World !', '$'
En fait, je n'ai plus le code, mais oui il y avais bien l'interuption d'aret, et le $ a la fin(Même que j'ai préfèrer mêtre "chaine",XXh, sauf que la le n° ne me revien pas de tête...)
Bref, c'était bien un exe que je voulais faire, mais avec un même segment pour le code et les données(je ne savais pas déclarer plusieures segments)
Donc, il n'y a pas de org, et il y a bien un format mz.
Mais bon, c'est un peut batailler pour demender comment faire une chose a ne pas faire...
Sinon, tu ne conaitrais pas des cours/tutos pour apprendre l'asm avec la syntaxe fasm?
Mes articles Développez | Dernier article : Raytracer en haskell
Network library : SedNL | Zenol's Blog : http://zenol.fr
N'oubliez pas de consulter la FAQ et les cours et tutoriels.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager