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 :

qemu + assembleur


Sujet :

Assembleur

  1. #1
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut qemu + assembleur
    Salut à tous.
    J'aimerais suivre/débuter les tutoriels d'assembleur nasm.

    J'aimerais essayer mes codes sur qemu(-system-x86_64) au lieu de sur mon système, mais je sais pas comment m'y prendre.

    J'ai un système linux 64 bits avec nasm et qemu d'installer.


    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 377
    Points : 23 663
    Points
    23 663
    Par défaut
    Hello,

    Puisque tu as décidé de tout reprendre depuis le début — ce qui, en soi, est une excellente chose — il va donc falloir t'y coller. :-)

    Tu as peut-être déjà eu l'occasion de suivre le tutoriel de Paul Toth. Dans tous les cas, voici la marche à suivre :

    Sur PC, la taille des secteurs des différents volumes depuis les disquettes est 512 octets (voir ici). Le premier secteur d'une disquette et, depuis, des disques durs (et mêmes des clés USB et autres mémoires statiques si ton BIOS est capable de les reconnaître et de les présenter comme des disques ordinaire) est chargé en mémoire au démarrage à une adresse fixe : 7C00:0000 (en mode réel 16 bits) à condition que les deux derniers octets contiennent un magic number donné : 55 AA, soit 0x55 pour l'avant-dernier et 0xAA pour le dernier (précision importante à cause du little endian).

    Il te faut donc faire une « image de disque » qui consiste simplement à mettre le contenu de tous les secteurs bout à bout dans un fichier, sans autre format. Celle-ci peut cependant se résumer à un seul secteur s'il n'y a rien d'autre à lire après. Mais ce secteur doit quand même être complet.

    Le plus simple dans un premier temps est d'écrire un petit programme 16 bits avec NASM qui va écrire quelque chose à l'écran, ou simplement déposer des informations en mémoire. N'oublie pas d'ajouter une boucle infinie en fin de programme pour l'arrêter, sinon le processeur continuera à interpréter le reste qui, par nature, est indéfini (eh oui, on est réellement « tout en bas »). Complète ensuite ton code avec des « db » pour arriver à 510 octets, puis termine ton programme avec « db 0x55,0xaa ». Assemble ensuite ton programme comme un fichier « BIN » plat.

    Tu te sers ensuite de ce fichier comme d'une image de disque : lance « qemu-system -fda tonfichier ».

Discussions similaires

  1. Tutoriels, F.A.Q : la rubrique Assembleur de Developpez.com
    Par Alcatîz dans le forum Assembleur
    Réponses: 3
    Dernier message: 07/06/2007, 19h14
  2. ecrire son OS (assembleur ??)
    Par Anonymous dans le forum Programmation d'OS
    Réponses: 9
    Dernier message: 25/11/2002, 19h25
  3. Assembleur sous Windows et sous Linux
    Par Bibouda dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 28/10/2002, 07h55
  4. Random en Assembleur
    Par funx dans le forum Assembleur
    Réponses: 9
    Dernier message: 02/09/2002, 17h05
  5. Quel désassembleur/assembleur pour un exe Windows ?
    Par Anonymous dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 17/04/2002, 10h59

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