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

Programmation d'OS Assembleur Discussion :

Création d'une image de disquette pour utiliser avec VirtualBox (Windows) ?


Sujet :

Programmation d'OS Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut Création d'une image de disquette pour utiliser avec VirtualBox (Windows) ?
    Bonjour,

    Voici le code que j'utilise :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    [ORG 7C00h]                     ; This is where BIOS put me
     
    ; ---------------------------------------------------------
    ; Main program
    ; ---------------------------------------------------------
     
            mov si, msg             ; Print message
            call putstr
     
    hang:   jmp hang                ; Hang!
     
     
     
    ; ---------------------------------------------------------
    ; Functions and variables used by our bootstrap
    ; ----------------------------------------------------------
     
    msg     db 'Hello Cyberspace!', 0
     
    ; Print a 0-terminated string on the screen
    putstr:
            lodsb                   ; AL = [DS:SI]
            or al,al                ; Set zero flag if al=0
            jz .done                ; Jump to .done if zero flag is set
            mov ah,0x0E             ; Video function 0Eh
            mov bx,0x0007           ; Color
            int 0x10
            jmp putstr              ; Load characters until AL=0
    .done:
            retn
     
    times 510-($-$$) db 0
    db 0x55
    db 0xAA
    Je le compile avec :
    nasm boot2.asm -f bin -o boot2.bin
    Puis je créé une image de disquette avec :
    bfi -t=144 -f=boot2.img -b=boot2.bin
    Lorsque je boot avec dans VirtualBox, rien ne se passe... même pas un message d'erreur... j'ai juste un curseur blanc et fixe en haut à gauche...

    Si je laisse le lecteur de disquette vide, j'ai bien un message d'erreur qui indique qu'il n'y a pas de média pour booter...

    Si j'utilise un fichier *.img d'une disquette de Windows 95, ça fonctionne !

    Est-ce mon code qui n'est pas bon ou alors peut-être l'image de disquette qui n'est pas construite correctement ?

    Merci,
    ZiP

  2. #2
    Membre chevronné Avatar de bifur
    passe le balais et l'aspirateur
    Inscrit en
    Mars 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : passe le balais et l'aspirateur

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Par défaut
    tu initialise si mais pas ds (le selecteur de segment) initialise le par zéros

    sa valeur est inconnu si ça se trouve ce n'est pas zéros (c'est même quasiment sur)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonsoir bifur,

    Comment ferais-tu ?

    J'ai essayé avec un :
    Mais il me provoque cette erreur :
    boot2.asm:7: error: invalid combination of opcode and operands
    Mais je pense que le problème est causé par l'image de la disquette car le code utilisé a été testé par son auteur et fonctionne...

    Il faudrait que je trouve une méthode alternative pour créer mon image de disquette avec mon secteur de boot...

    Merci,
    ZiP

  4. #4
    Membre très actif
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Billets dans le blog
    1
    Par défaut
    faut faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    format binary as 'img'
    org 7c00h
    push cs ;pour que ds pointe au meme endroit que cs
    pop ds
    ;code de boot qui fait ce que tu veux
    times 510-($-$$) db 90h ;nop
    db 55h,0aah
    times (80*18*2-1)*512 db 0
    et là, l'image de disquette fera la bonne taille, et sera compilée en tant que .img, ou autre, si ça marche pas, après, ça veut surement dire que code n'est pas bon.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonjour,

    J'ai essayé, ça ne fonctionne toujours pas avec votre proposition de code.

    Mon fichier fait bien 512 octets.

    Je pense que le problème vient de l'image de la disquette et non du fichier boot2.bin.

    Je suis à la recherche d'une solution alternative pour créer un fichier *.img qui est une image de disquette correcte.

    Merci,
    ZiP

  6. #6
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonjour,

    Voici un code qui fonctionne :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ;-----------------------------------------------
    ; nasm bootsect.asm -f bin -o bootsect.img -l bootsect.lst
    ;-----------------------------------------------
     
            org 0h
    ; Initialisation des registres de segment
            mov ax, 0x07C0
            mov ds, ax
            mov es, ax
            mov ax, 0x8000
            mov ss, ax
            mov sp, 0xF000
     
    ; Afficher le message
            mov si, hellomessage
            call display_zstr
     
    infini:
            jmp infini
     
    ;-----------------------------------------------
    ; Fonction d'affichage de chaine à zéro final
    ;-----------------------------------------------
    display_zstr:
            push ax
            push bx
    .beg:        
            lodsb
            cmp al, 0
            jz .end
            mov ah, 0x0E
            mov bx, 0x0007
            int 0x10
            jmp .beg
    .end:
            pop bx
            pop ax
            ret
     
    hellomessage:
            db "Tout petit petit système d'exploitation !", 13, 10, 0
     
    times 510 - ($ - $$) db 0x90
    dw 0xAA55
    times (1 * 18 * 512) - 512 db 0
    Par contre, à quoi sert cette ligne :
    times (1 * 18 * 512) - 512 db 0
    Merci,
    ZiP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Générer une image depuis canvas pour email avec outlook
    Par Tankian dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/12/2014, 21h13
  2. Réponses: 6
    Dernier message: 02/02/2011, 10h13
  3. utiliser une image de fond pour une application
    Par AM1NE dans le forum Débuter
    Réponses: 4
    Dernier message: 03/07/2009, 12h18
  4. Lien pour TELECHARGER une image plutôt que pour l'ouvrir
    Par nabab dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/01/2005, 18h07
  5. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58

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