IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Les outils pour l'ASM ?


Sujet :

Assembleur

  1. #21
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Je pense que si, car dosbox fait tourner des vieux jeux qui utilisaient les appels BIOS, mais il faut tester...
    Ce n'était que pure supposition de ma part n'ayant jamais utilisé DosBox. Cet émulateur doit être une véritable usine à gaz s'il reconstitue toutes les interruptions du Bios. Notamment en ce qui concerne l'affichage !

  2. #22
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 439
    Points : 43 082
    Points
    43 082
    Par défaut
    DOSBox emulates a S3 Video device and is capable of emulating a Hercules, CGA/EGA or VGA monitor.
    https://www.dosbox.com/wiki/Display

    donc je confirme, l'int 10h fonctionne.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #23
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    https://www.dosbox.com/wiki/Display

    donc je confirme, l'int 10h fonctionne.
    C'est vraiment impressionnant !

  4. #24
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Je pense que si, car dosbox fait tourner des vieux jeux qui utilisaient les appels BIOS, mais il faut tester.

    sinon il y a Bochs, qui est un émulateur intégrant en plus un debogueur.

    Mais que comptes tu faire Romain, si c'est de l'affichage de caractères, tu peux aussi utiliser les fonctions DOS notamment avec dosbox.
    Ce que je cherche à faire est très peu commun d'où la difficulté de trouver des informations pour faire un programme. Utiliser des interruptions du DOS c'est utiliser des fonctions déjà faites or je veux essayer de faire un programme sans m'aider avec des fonctions. C'est le problème avec MASM: tous les programmes que j'ai trouvé sur internet utilisent des fonctions déjà faites comme "printf". Je voudrais faire un programme mais tout faire moi même, sans utiliser des fonctions externes. Est-ce possible ?

  5. #25
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 439
    Points : 43 082
    Points
    43 082
    Par défaut
    Refaire la fonction printf avec des fonctions fournies par le bios, oui, ou en mode texte, tu peux taper directement dans l'adresse mémoire video et y saisir ton texte, en mode graphique, c'est beaucoup trop complexe.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #26
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Refaire la fonction printf avec des fonctions fournies par le bios, oui, ou en mode texte, tu peux taper directement dans l'adresse mémoire video et y saisir ton texte, en mode graphique, c'est beaucoup trop complexe.
    Quel est le compilateur le plus approprié pour faire un programme sans fonctions incluses ?

  7. #27
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 439
    Points : 43 082
    Points
    43 082
    Par défaut
    Comme ça je dirais Nasm pour l'assembleur. avec mingw pour l’édition de liens.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  8. #28
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Comme ça je dirais Nasm pour l'assembleur. avec mingw pour l’édition de liens.
    Mais on peut ou pas générer des EXE(compatibles avec windows 7) avec Nasm ?

  9. #29
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Refaire la fonction printf avec des fonctions fournies par le bios, oui, ou en mode texte, tu peux taper directement dans l'adresse mémoire video et y saisir ton texte, en mode graphique, c'est beaucoup trop complexe.
    Trop complexe est un poil exagérer , même si pour un débutant il ne saurait sûrement pas faire cela correctement.
    On général on utilise du bitmap font en mode graphique pour afficher du texte, ce qui serait complexe (pour un débutant) c'est de refaire un blitter. (Je sais que tu sais cela , mais plus pour détailler comment faire s'il voudrait vraiment le faire lui même).

    Citation Envoyé par FRANCI5 Voir le message
    Mais on peut ou pas générer des EXE(compatibles avec windows 7) avec Nasm ?
    Comme on te l'a dit précédemment non , mais si ton envie est de réinventer la roue comme le printf, faudra rester sur du dos (comme je te l'ai deja dit sur Windows tu devra passer par API Windows pour l'affichage).

    Ce que je cherche à faire est très peu commun [...]
    Je voudrais faire un programme mais tout faire moi même, sans utiliser des fonctions externes. Est-ce possible ?
    Ben en faite , si on incluse le monde de la programmation homebrew sur console c'est assez commun de refaire le printf (même refaire une partie de la pipeline graphique en faite que cela soit en 2D ou 3D)
    Par contre sur PC (enfaîte sur tout type de machine) c'est assez complexe si tu veux absolument tout gérer , parce que ça demande des connaissances allant bien au delà des connaissances sur l'asm (plutôt sur l'architecture des ordis).
    Même si techniquement sur des machines relativement simple comme la Nes ou même un Amstrad CPC c'est relativement possible de gérer sa machine à 100% sur un délai assez court

  10. #30
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Merci à vous tous pour les petits guides que vous m'avez donné. Je pense que la question est "résolue". Résumé:

    - Nasm et Tasm ne peuvent générer que des programmes COM qui peuvent être exécutés avec DosBox
    - Les programmes EXE codés par quelqu'un en assembleur ne sont pas possibles

    Est-ce correct ?

  11. #31
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 439
    Points : 43 082
    Points
    43 082
    Par défaut
    Citation Envoyé par FRANCI5 Voir le message
    Mais on peut ou pas générer des EXE(compatibles avec windows 7) avec Nasm ?
    Comme on te l'a dit précédemment non
    C'est pour cela qu'il faut un linker, fourni avec MinGW (ou un autre compilateur).

    Pour la programmation graphique, tu peux utiliser des modes VESA 32 bits (int 10h ax=0x4fxx), permettant d'assez facilement aller taper dans les pixels avec une gestion de couleur RVB facile à l'écran. Tu seras par contre obligé d'utiliser les fonctions BIOS int 10h pour l'activer. Par contre oublie tous les anciens modes VGA qui sont une galère.

    Pour gérer l'affichage de texte en mode graphique, c'est plus compliqué, il faut "dessiner" les caractères et donc utiliser une police bitmap comme évoqué, et éventuellement gérer des transformations pour la taille. Et je parle même pas d'utiliser une police comme Times new Roman ou autre, ou là il faut décoder le format truetype ou opentype.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #32
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    C'est pour cela qu'il faut un linker, fourni avec MinGW (ou un autre compilateur).
    Mais connais-tu un compilateur avec un linker pour générer un EXE qui est compatible sous Windows 7 64 bits ?
    Et est-ce qu'il y a des instructions ou des registres qu'il ne faut pas utiliser en 64 bits ?

    PS: j'ai réussi à faire une version obj du programme mais c'était au moment de la compilation que ça marchait pas avec l'erreur du winmain@16

  13. #33
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Citation Envoyé par FRANCI5 Voir le message
    Mais connais-tu un compilateur avec un linker pour générer un EXE qui est compatible sous Windows 7 64 bits ?
    Ben si on parle de compilateur oui , MingW on est un et techniquement on peut l'utiliser sans Nasm pour faire de l'assembleur (par contre si on t'a pas conseillé cette méthode c'est que l'assembleur utilisé par les compilateurs sont pas super user friendly ).

    NT:Ici je parle bien de compilateur donc un compilateur C/C++ ou autre , un assembleur c'est autre choses genre Nasm (et il n'ont pas forcément vocation de créer des binaires compatibles pour des OS).

  14. #34
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    Ben si on parle de compilateur oui , MingW on est un et techniquement il peut être utiliser sans Nasm pour faire de l'assembleur (par contre si on t'a pas conseillé cette méthode c'est que l'assembleur utilisé par les compilateurs sont pas super user friendly ).
    Mais lorsque j'essaye j'ai des problèmes de compatibilité. Il me dit que le programme est sous 16 bits.
    Quelle est la solution pour faire que le programme soit en 32/64 bits ?

  15. #35
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    MinGW ne compile pas pour du 16 bits

    On te l'a dit mainte fois , Nasm + MinGW ou alors MinGW uniquement
    (Et Asmou t'as conseillé MASM).

  16. #36
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    MinGW ne compile pas pour du 16 bits

    On te l'a dit mainte fois , Nasm + MinGW ou alors MinGW uniquement
    (Et Asmou t'as conseillé MASM).
    Comment faire un programme assembleur qui tourne sous un système en 64 bits ?

  17. #37
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 439
    Points : 43 082
    Points
    43 082
    Par défaut
    Il faut indiquer à Nasm quel type de code tu fais, avec la directive :
    ou
    Par contre, pas de code 16 bits sur un OS 32 bits, dans ce cas tu ne pourras pas utiliser les fonctions du BIOS ou du DOS, sauf à utiliser dosbox.

    Sinon pour faire un .exe depuis ton code asm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nasm -fwin32 fichier.asm
    gcc fichier.obj -o fichier.exe
    gcc avec ces paramètres va appeler le linker ld.

    Ton source .asm doit contenir la directive :
    dans la section .text
    nécessaire à gcc.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  18. #38
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    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
    18
    19
    BITS 64
    section .data
     
    str: db "hello world", 10, 0
     
    section .text
     
    global WinMain
    _main:
     
      MOV RAX, 1
      MOV RDI, 1
      MOV RSI, str
      MOV RDX, 15
      syscall
     
      MOV RAX, 60
      MOV RDI, 0
      syscall
    Ce code ne vient pas de moi je l'ai copié et essayé de le compiler avec vos conseils mais cette fois ci l'erreur est:
    undefined reference to "WinMain"

  19. #39
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 439
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 439
    Points : 43 082
    Points
    43 082
    Par défaut
    La ligne Winmain est l'équivalent de main pour les API windows.

    Le code est bizarre, je ne suis pas spécialiste assembleur sous Windows, mais pour moi on utilise pas syscall avec passage de paramètres par registre pour appeler les fonctions systèmes, mais on empile les paramètres et appele la fonction par un call.

    Si il s'agit de faire un programme dans la console, ne met pas winmain.

    Regardes ici:
    https://bitcodersblog.wordpress.com/...n-nasm-part-1/
    ça te montre la méthode Linux (avec int 0x80 : en 32 bits sous linux on utilise int 0x80, en 64 bits syscall) et en dessous la méthode Windows.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  20. #40
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Novembre 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2015
    Messages : 30
    Points : 23
    Points
    23
    Par défaut
    En cherchant sur divers forums, le problème pourrait être à cause de windows. Il faudrait obligatoirement utiliser l'API de Windows(ses fonctions).

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/05/2015, 18h33
  2. Unity 4.3 intègre un moteur 2D et tous les outils pour faire un jeu 2D
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 12/11/2013, 15h42
  3. Réponses: 10
    Dernier message: 16/04/2013, 11h00
  4. les outils pour developper une platforme de jeux 3D
    Par lordsaka dans le forum Linux
    Réponses: 5
    Dernier message: 05/01/2007, 22h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo