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

x86 16-bits Assembleur Discussion :

Code de création d'un fichier *.img


Sujet :

x86 16-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Code de création d'un fichier *.img
    Bonjour,

    j'essais de créer mon propre noyau. Mais j'ais un problème pour le tester, je n'arrive pas à créer une image de disquette au format *.img . J'ai trouvé un code sur internet, que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    incbin "bootsector.bin"
    times 510-($-$$) db 0
    dw 0xAA55 ; signature
    incbin "kernel.bin"
    times ((1440 * 1024)-($-$$)) / 4 dd 0 ; disquette 1.44M
    Mais quand je le compile avec NASM, la console m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    D:\OS\2>nasm*-f*win32*disq.asm*-o*disq.o
    disq.asm:2:*error:*TIMES*value*-2*is*negative
    Pourriez-vous m'aider ?
    Merci d'avance.

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

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 314
    Points : 550
    Points
    550
    Par défaut
    je peut pas t'aider sur ce qui est de la création d'image disquette avec nasm parce que j'uttilise une méthode barbare (mais qui te seras pt'être utile)

    cad que je créer directement mon programme pour qu'il s'installe sur la disquette et ensuite j'uttilise un autre programme pour créer une image de disquette (uttilisé pour graver un cdrom avec l'option "emulation de disquette")

    y'as las sources par la: http://bofur.olympe-network.com/dwld.php (je me fait un ptit peu de pub, une fois n'est pas coutume)

  3. #3
    Membre averti Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Points : 390
    Points
    390
    Par défaut
    Citation Envoyé par Jack0 Voir le message
    Bonjour,

    j'essais de créer mon propre noyau. Mais j'ais un problème pour le tester, je n'arrive pas à créer une image de disquette au format *.img . J'ai trouvé un code sur internet, que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    incbin "bootsector.bin"
    times 510-($-$$) db 0
    dw 0xAA55 ; signature
    incbin "kernel.bin"
    times ((1440 * 1024)-($-$$)) / 4 dd 0 ; disquette 1.44M
    Mais quand je le compile avec NASM, la console m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    D:\OS\2>nasm*-f*win32*disq.asm*-o*disq.o
    disq.asm:2:*error:*TIMES*value*-2*is*negative
    Pourriez-vous m'aider ?
    Merci d'avance.
    De toute évidence 'bootsector.bin', donc ($-$$), fait 512 octets. Et dans ce cas, il doit contenir 0x55AA. Facile à vérifier. Vous pouvez donc essayer de virer simplement les lignes 2 et 3.

    Un petit exercice très minimal pour vérifier que la procédure 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 -fbin -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
    Assembler comme indiqué sur la deuxième ligne du listing. Remarquez que la disquette est réduite à une seule piste. Vous attachez 'bootsect.img' à une machine virtuelle, et vous bootgez. Pas très spectaculaire, mais je n'ai pas mieux sous la main tout de suite.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/06/2010, 12h11
  2. Réponses: 4
    Dernier message: 26/10/2009, 22h18
  3. mettre du code dans la création d'un fichier php
    Par steam_o_roll dans le forum Langage
    Réponses: 6
    Dernier message: 28/05/2007, 15h31
  4. FOXPRO 2.6 : erreur créations du /des fichiers CAB
    Par breihtiti dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/11/2002, 11h28
  5. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30

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