Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ASM] Probleme avec CD-ROM

...

    1 octobre 2006 à 1:31:10

    Bonjour, je débute en Assembleur, et j'étudie les sources d'un OS simple... Mais cet OS est fait pour etre booté d'une disquette...et je cherche le "Numéro" du CD-ROM (Par exemple,
    Disquette "A" = 00h
    Disquette "B" = 01h
    HDD1 = 80h
    HDD2 = 81h
    )

    Et bein, merci d'avance :) .

    Je vous donne le code :p .(C'est pas moi qui l'ai créé, je l'étudie/modifie)
    boot.asm
    ;Un secteur de boot plus complet

    [BITS 16]
     

    jmp start

    db 'G','A','M','E','O','S','0','1'
    dw 512
    db 1
    dw 1
    db 2
    dw 224
    dw 2880
    db 0xF0
    dw 9
    dw 18
    dw 2
    dw 0
    dw 0
    db 0
    db 0
    db 0x29

    start:


    cli ; désactive les interruption car le processeur déteste qu'on touche au segment, il pourrait déclencer une interruption
    mov ax, 0x07C0
    mov ds, ax
    mov es, ax
    mov fs, ax
    mov gs, ax  ; tous les segments de donées sont initialisés
    mov ax, 0x6000           
    mov ss, ax ; le bas de la pile est à l'adresse 0x6000:0
    mov sp, 0xFFFF ;et la pile à une taille de 0xFFFF octet, donc le somment de la pile est à l'adresse 0x6000:0xFFFF
    sti ;réactive les interruptions



    mov ax, 0003h ;ah contient le numero de fonction, al le paramètre
    int 10h


    ;Une routine qui charge un kernel de 512 octet en mémoire à l'adresse logique 2000:0000

    mov ax, 2000h
    mov es, ax ; pour l’int 13h
    mov ah, 02h ; numero de fonction de l’int 13h, 02h pour lire des secteurs
    mov al, 03h ;lit 3 secteurs
    mov dl, 84h ; (le lecteur disquette A correspond à 00h, le B à 01h, le disque dur 1 à 80h, le disque dur 2 à 81h)
    mov dh, 1 ; numero de face
    mov ch, 0 ; numero de piste
    mov cl, 16 ; numero de secteur
    mov bx, 00h ;pas d'offset
    int 13h ;appel de l'interruption
    jc erreur

    xor cx, cx
    xor ax, ax

    mov ax, 2000h
    mov es, ax ; pour l’int 13h
    mov bx, 0x600
    mov ah, 02h
    mov al, 01h
    mov dl, 00h
    mov dh, 0
    mov ch, 1
    mov cl, 1
    int 13h
    jc erreur

    mov si, msg_chargement
    call message

    jmp 2000h:0000h ; execution du kernel


    message:               
    lodsb                   
    or al,al               
    jz done
    mov ah,0eh             
    mov bx,0007             
    int 0x10               
    jmp message
    done:
    ret

    erreur:
    mov si, msg_err_chargement
    call message
    jmp 0xffff:0x0000




    msg_chargement db 'chargement du kernel reussi',0
    msg_err_chargement db 'erreur lors du chargement du kernel',0
    drive db 0

    times 510-($-$$) db 90h; rempli le fichier compile jusqu'au 510 ème octet
    dw 0xAA55 ; word magic








    En fait, je sais meme pas si c'est sa le probleme....mais a chaques fois, "erreur lors du chargement du kernel"
    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2006 à 1:13:21

      UP !!! S'il vous plaît !! :colere2:
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        3 octobre 2006 à 7:04:19

        Franchemment arrête de up aucun Zér0 ne connait de l'assembleur...

        o_O
        • Partager sur Facebook
        • Partager sur Twitter
          3 octobre 2006 à 12:23:44

          Si....quelques uns...il me semble :euh:
          • Partager sur Facebook
          • Partager sur Twitter
            4 octobre 2006 à 12:26:33

            Désolé, mais...UP ! [Si un modo me demande d'arreter d'upper, je le ferai :( ]
            • Partager sur Facebook
            • Partager sur Twitter
              4 octobre 2006 à 16:53:38

              Citation : Stax

              Bonjour, je débute en Assembleur, et j'étudie les sources d'un OS simple... Mais cet OS est fait pour etre booté d'une disquette...et je cherche le "Numéro" du CD-ROM


              Il n'en a pas (pas du moins avec l'int 0x13).
              • Partager sur Facebook
              • Partager sur Twitter
                4 octobre 2006 à 21:15:35

                Merci pour la réponse(Bien que tardive :lol::p ) Pourrait tu m'aider a faire booter le kernel ? [Je comprendrerais si tu refuse :) ]

                Merci :)
                • Partager sur Facebook
                • Partager sur Twitter
                  6 octobre 2006 à 21:10:28

                  Moi je commence en ASM mais je ne sais pas t'aider :o
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 octobre 2006 à 22:39:44

                    merci tout de même pour ta réponse :) .
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 octobre 2006 à 9:04:17

                      Il me semble que -ed- peut peu être t' aider.Remram44 aussi je pense.Je l' ai ait déja vu sur le forum C/C++ parler de L' ASM.

                      Au fait, moi aussi j' aimerais m' y mettre.Quelle est le tuto que tu suit?

                      merci d' avançe
                      @+
                      • Partager sur Facebook
                      • Partager sur Twitter
                        7 octobre 2006 à 16:15:33

                        En fait, je débute vraiment, je suivais un tuto sur "Comment créer son OS en assembleur" :p .
                        Si tu veux, cherche sur google, tu en trouveras tout pleins o_O ... mais ils sont en anglais :) .
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 octobre 2006 à 17:25:56

                          Citation : Stax

                          Merci pour la réponse(Bien que tardive :lol::p ) Pourrait tu m'aider a faire booter le kernel ? [Je comprendrerais si tu refuse :) ]

                          Merci :)


                          Euh... On apprend pas l'asm en c/c des bootloader hein.
                          Il vous faut des vrais tutos -_-
                          J'avais rédigé un tutoriel y'a longtemps mais il doit être parti aux oubliettes.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 octobre 2006 à 21:46:18

                            :'(:( !!! As-tu encore une copie, peut-tu me l'envoyer :euh::D
                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 octobre 2006 à 8:53:50

                              À te voir aller, tu ne sais même pas comment fonctionne un boot tout simple. Prend toi des base d'abord et vas dans les interruptions par la suite. Lis le livre AoA, je suis un peu trop crevé pour lire ton code et encore plus pour te l'expliquer.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 octobre 2006 à 12:37:28

                                :lol: C'est ce que j'avais commencé a faire...mais en fait, je me cherche un bon tuto...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 octobre 2006 à 4:25:19

                                  Tu ne trouveras pas de tutorial d'assembleur... On est pas en PHP ou en C/C++ (petits langages basic).

                                  Comme je t'ai dis, prend le bouquin AoA et procure toi la documentation de développeur Intel x86.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  [ASM] Probleme avec CD-ROM

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown