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 :

Assembleur et PC UEFI : comment fait-on maintenant


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Assembleur et PC UEFI : comment fait-on maintenant
    Bonjour

    Ma question est peut-être bête vu que tout le monde est sous Windows.

    1- dans le temps des anciens BIOS et DOS, pour faire appel par exemple au mode 13 de l int 10h je faisais
    ce qui corespondait au mode 320x200x256 couleur, le mode préféré des bon vieux jeux Ms-dos.

    Avec l'Uefi, j'ai beau chercher en long en large et en travers je ne trouve aucune doc technique sur le developement Asm UEFI c'est devenu top secret !
    dans le temps il sufisais de tapez sur internet assembleur dos ou interruption on avez toute la liste detailler
    tout se que je trouve c est des truc general sur l uefi mais rien de precis
    alors ma question c est comment on fait maintenant pour allez en mode 13 de l int 10h avec l uefi ?
    car meme si msdos n est pas compatible des systeme comme windows ou linux pour faire appel au fonction de chaque materiel il doive envoyer les code
    a l interresser le fameux Int ou Call. car le materiel meme uefi et standard au sinon si falait des drivers specifique pour chaque carte etc il faudrais des DVD remplis de drivers en tout genre ce qui serai infaisable de faire tourner un OS.

    2- j ai beau regarder le system de boot en uefi regarder des photo j y comprend pas grand chose d ou ma question

    je prend l exemple avec msdos qui et le plus simple
    avec encien Bios ,Demmarage du pc ,post ,recherche du premier secteur de boot execution de io.sys msdos.sys config.sys + driver clavier cd souris etc.. et commande.com

    si j ai compris ou pas merci de me corriger
    avec uefi ,Donc deux partition 1 de 100mo en fat 32 et une deuxieme ou il y a l os et les programme
    donc Demmarage du pc ,post ,1er partition execution de io.sys msdos.sys config.sys + drivers ,et en suite 2eme partition et execution de command.com

    ?

    j ai pris msdos comme refference c est le plus simple a comprendre

    donc si vous avez des reponce a mes question en version simple a comprendre merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    ...

    Bon reprenons notre calme, qu'essayes-tu faire ? un OS en mode graphique et le booter sur ton PC qui est doté d'un UEFI (BIOS moderne) ?

    Personnellement je n'ai aucun problème, mon pc est dote d'un UEFI et je peux booter mon OS (très primaire) en mode vesa 1920*1080 tranquillement.

    Après as-tu tester ton OS sur un autre PC pour voir s'il marche ? si tu veux upload-le et je le testerais pour toi.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut bonjour pour repondre a ta reponce de ma question
    j ai vu que tu doit developer sous windows ou dans le genre

    imaginont que je fasse un genre de Msdos ou Freedos En 64 bit Uefi

    c est comme si on reprener le msdos des annee 80 et qu on le reprogramer en version 2015

    et tu ma parler de mode video 1280x1024 moi je parler du mode 13h mode video 320x200 pixel en 256 couleur

    et ce que j essaye de savoir de chercher c est ou son passer les interuption comme la video la souris etc du bon vieux bios mais en uefi

    il doit surement il y avoir des correspondance que se soit sous linux ou autre mon code asm AX,13h (int 10h) faut bien que je l envoi

    comme pour afficher un pixel avec le vieux bios je l adresser a l adresse de la ram video $A000 etc

  4. #4
    Invité
    Invité(e)
    Par défaut
    euh, tu crois sérieusement que l'interruption 0x10 a disparu des BIOS modernes ?

    http://www.gladir.com/LEXIQUE/INTR/int10f13.htm voilà ce que dont tu parle, c'est du mode texte pas graphique et ça marche sur tous les BIOS.


    Ou si tu as windows 32 bit (un OS 64 bit ne permet pas l'utilisation des interruptions 16 bit du BIOS), tu peut essayer ça, qui utilise ta méthode du bank switching: http://hackasm.5gbfree.com/Projects/...ows%20x86).zip (nasm)

    Bon on va faire un truc, passe moi ton code et je vais tenter de le démarrer sur mon PC.
    Dernière modification par Invité ; 15/05/2015 à 22h29.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Vous avez pas compris ma question et erreur dans mon code
    Je fais version BASM Turbo Pascal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Mov AH,00h
    Mov AL,13h c est bien le mode 320x200 en 256 couleurs
    Int 10h
    Mov AH,0Ch
    Mov AL,Couleur
    Mov CX,X
    Mov DX,Y
    int 10h
    donc affichage d'un pixel à X,Y , Couleur.

    Je ne veut pas utiliser des librairies Windows ou GNU ou autre, je veux faire ma propre librairie graphique.
    Si je prends la librairie graphique de Turbo Pascal, Graph.tpu, elle et écrite en assembleur ; j'ai les codes sources, comment je les ai eus c'est un secret !

    Je doute que si je prends mon code source et que je l'exécute, un PC UEFI en mode secure boot affiche mon pixel en mode 320x200 256 c.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu as oublié de préciser la page dans laquelle écrire le pixel: http://www.gladir.com/LEXIQUE/INTR/int10f0c.htm

    Et pour calculer la page ..., je ne m'en rappelle plus, ça fait une plaie que je n'utilise plus le mode vga.

    Tu peut toujours tenter de t'appuyer sur ce bout de code:
    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
     
                        xor     dx,dx
        ;<*START: Appele de la zone de mémoire vidéo 0x0000A000
                            mov     ax, 0xA000
                            mov     es, ax
        ;END*>
     
        ;<*START: EmplacementMémoire :di = Widht * y + x
                            mov     ax, width ; width
                            mov     bx, y
     
            ;<*START: Defini le nouveau bank n°x+1
                                pusha
                                shr     bx, 6       ;bx/=64 :: bx/=2^6 :: declage(shift) des bits vers la droite (right)
                                mov     dx,bx       ; addresser la zone VRAM suivante
                                mov     ax,4f05h
                                xor     bx,bx
                                int     10h     ;Changer de zone VRAM
                                popa
            ;END*>
                            mul     bx       ; ax= 1023*y
                            add     bx, x
                            add     ax, bx   ; ax+=x
                            mov     di, ax
            ;END*>
                        mov     eax, couleur        ;Couleur
                        stosd           ;stosd  equivalent a --> mov [ES:DI],eax  Changer la couleur du pixel
    Et de ces liens: http://www.brokenthorn.com/Resources/OSDevVga.html http://brokenthorn.com/Resources/OSDevVid2.html

    Sinon il m'a l'air bon ton programme, mais l'OS que tu utilises, c'est du 32 ou 64 ? en 64, tu ne peux faire appel aux fonctions du BIOS, car c'est du 16 bit.
    Dernière modification par Invité ; 15/05/2015 à 23h31.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut ok merci
    moi je croyer que les fonction Bios donc les interuption n existai plus sur l uefi ,moi quand je regarde des truc sur luefi il parle de drivers efi etc etc

    et pour l assembleur c est pas un probleme

    au lieu d ecrire AX 16bit ,ou EAX 32 bit ,en 64 bit sa Donne RAX.

    merci

    si vous avez d autre info

    mais va faloir que je me conforme a l uefi pour recevoir une certification UEFI

  8. #8
    Invité
    Invité(e)
    Par défaut
    De rien, mais d'où vient cette obsession de l'UEFI ?

    Il ne va jamais t'empêcher de programmer en asm lol

    certification ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut ben le passage a de nouvelle norme quand on a beigner dans le msdos c est compliquee
    ce que j essaye de faire en gros c est de reecrire un MsDos Ou Freedos des Annee 80 en version 2015

    il y a du pain sur la planche deja va faloir comprendre L Uefi et Reecrire Tout Pour ce Conformer Au Norme Uefi Pour Recevoir une certification

    tu me disait interdire de programmer peut etre pas ,mais chez microsoft il serai bien capable de faire que le secure boot serai bloquee

    et ce qui interdirai tout les systeme d exploitation a part Windows 10 ,ce qui signifirai la mort des systeme libre comme linux ,et bien d autre.

    heu sa s appel pas un monopole ,et donc violation des loi antitrust il risque d y avoir des beau procee dans un avenir proche.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Cool ton projet, tu est en où ?

    Et le jour où je ne pourrais plus démarrer mon OS, on en reparleras ^^ (après pour le cas de Linux, joseph un peu )

    Donc pour l'instant, tu n'as pas besoin de t'en préoccuper de quel type de BIOS ton pc est doter, ainsi code ton OS sans crainte.

    http://windows.microsoft.com/fr-FR/windows-8/what-uefi
    http://www.uefi.org/learning_center/papers
    Dernière modification par Invité ; 16/05/2015 à 00h07.

  11. #11
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Bonjour les jeunes,

    Pour des raisons de compatibilité, l'UEFI intègre bien les fonctions du BIOS.
    Peut-être que certaines fonctions comme les accès aux disques XT (8086) ne sont plus supportées, je
    ne sais pas je n'ai jamais testé, mais pour l'instant, toutes les machines avec UEFI que j'ai testé sont compatibles

    INDEPTEKNO, tu dis vouloir réécrire un FreeDOS des années 80... mais FreeDOS a été maintenu jusqu'en 2011 (ou 2012 peut-être)
    donc avec gestion de FAT32
    Tu peux donc repartir sur cette base pour l'adapter à ce nouveau "BIOS"
    Quand je dis adapter, c'est dans le sens : tirer parti des nouvelles possibilités offertes par UEFI
    (enfin, je ne suis pas sûr qu'il y ait grand chose à gagner avec un OS aussi basique )

  12. #12
    Invité
    Invité(e)
    Par défaut
    Et puis ça m'étonnerait que des fonctions soient supprimées, ça dépend aussi des constructeurs de hardware et je doute qu'un jour ils prennent le risque de modifier leur protocole de communication au risque de bouleverser totalement le monde du dev system.


    Et je te parie que le bootloader (16 bit) et certainement une partie du kernel en 16 bit, de Windows/Linux/... sont bourrés d'utilisation des fonctions de BIOS.
    Alors, si un jour le monde du hardware change brusquement, ils devront revoir tous ces bouts de code.

    Et puis tant que ça marche, pourquoi ne pas garder une retro compatibilité comme intel le fait très bien avec ses instructions fpu, mmx sur nos procs de 5eme génération.


    Par contre, ils peuvent optimiser leur hardware, mais aussi en ajouter et je pense que l'UEFI prend en compte ces nouvelles fonctions et les rendre plus accessible avec des int plutôt qu'avec des in et out.

    Après, je ne dis pas que c'est moche comme système, qui permet d'avoir un accès hardware en mode x86/x64 idem pour le MMIO, mais bon si je fais cette remarque, c'est pour la raison qu'il n'y a pas vraiment de documentation complete, claire et bien détaillé d'un seul tenant sur le web de ces ports et mémoires mappées (même en 2015 ).

    Et il y en a même des unknow official port, crée un fichier nfo sur windows et va dans Hardware Ressources > I/O et enjoy ta lecture ...
    Dernière modification par Invité ; 16/05/2015 à 22h51.

  13. #13
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    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 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Et puis tant que ça marche, pourquoi ne pas garder une retro compatibilité comme intel le fait très bien avec ses instructions fpu, mmx sur nos procs de 5eme génération.
    La rétrocompatibilité n'est pas totale. En 64 bits, il n'est plus possible d’exécuter des programmes 16 bits.

    Je pense que l'UEFI boote les noyaux directement en mode protégé, contrairement au BIOS qui bootait en mode réel. Quand on passe en BIOS, il repasse en mode réel (du moins je suppose).

    Dans le futur, le support du BIOS disparaitra je pense, mais il sera toujours possible de simuler un BIOS via un programme ou via la virtualisation.

    l'UEFI apporte aussi le support des disques supérieurs à 2 To. On utilise alors des tables GPT au lieu de MBR. Le GPT est rétrocompatible avec MBR, il contient une MBR.
    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

  14. #14
    Invité
    Invité(e)
    Par défaut
    La rétrocompatibilité n'est pas totale. En 64 bits, il n'est plus possible d’exécuter des programmes 16 bits.
    Étant donné que les 16 bits est dépassé depuis 85 (http://en.wikipedia.org/wiki/IA-32) et que cela apporte beaucoup d'atout, même pour apprendre l'assembleur, ce n'est pas très grave, selon moi.

    Je pense que l'UEFI boote les noyaux directement en mode protégé.
    Je demande à voir, mais ça m'est un peu dérisoire, car à part mettre le flag PE a 1 du registre cr0, il faut charger la GDT et ses propres interruptions avant et c'est plutôt à la charge du développeur de le faire, car ces configurations sont très complexes, plein d'information sensibles qui définiront l'OS.

    Dans le futur, le support du BIOS disparaitra je pense
    Que ça soit BIOS ou UEFI, c'est juste un upgrade de BIOS, après étant donné que lors de la mise en route de la carte mère, le cpu va récupérer la première instruction dans la rom du BIOS pour qu'il initialise tous les hardwares et donne la main à un bootloader, après théoriquement ça se passe comme ça, après pratiquement je n'ai pas encore decompilé un BIOS.
    Dernière modification par Invité ; 19/05/2015 à 05h52.

  15. #15
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Par contre ta table de partition doit être GPT et non pas MBR...
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Merci a ceux qui me reponde
    Je vous remerci pour vos reponce

    mais il et vrai que quand on cherche des info ,de l initiation a l assembleur ,des tutoriel sur les interruption et l encien bios on trouve tout ce qu on veut
    meme dans le temps ou les pc tournee sous msdos on avez toute les info sur le sujet.

    mais l uefi j ai beau chercher sur le net ben je trouve rien pas de tutoriel ,rien sur les interruption etc ,on dirai que c est un secret d etats.

    pour ceux qui m on parler qu on pouvais encore programmer en Assembleur dos ,c est le mode legacie

    Pour freedos le probleme c est qu il et en 16 bit ou voir 32 bit reel

    ce que j essaye de faire c est de reecrire un msdos qui tournerai en mode uefi 64 bit proteger ,et c est la galere

    ,et l information qu on trouve sur le net sur windows 10 qui interdirai de faire tournee autre chose ,genre freedos ,linux ou autre os ,c est vrai ou c est de l intox ,car si c est vrai c est interdit sa serai un monopole de microsoft et puni par la loi anti trust ?

  17. #17
    Invité
    Invité(e)
    Par défaut
    Comme je les dis j'ai un mode UEFI dans mon bios que je peux activer, je les fais et j'ai booté mon OS sans problème (et de plus j'ai mis à jour mon BIOS qui date d'avril 2015)

    Après si tu trouves un PC avec UEFI qui empêche le boot autre que Windows, fais-moi en part.

  18. #18
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    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 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Je demande à voir, mais ça m'est un peu dérisoire, car à part mettre le flag PE a 1 du registre cr0, il faut charger la GDT et ses propres interruptions avant et c'est plutôt à la charge du développeur de le faire, car ces configurations sont très complexes, plein d'information sensibles qui définiront l'OS.
    Rien n’empêche d'avoir un mode protégé de base en modèle FLAT, et à charge du développeur de modifier la GDT de base comme il le souhaite.
    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

Discussions similaires

  1. comment détecter la maintenance d'un site et en limitater l'acces
    Par yves fiallet dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 11/10/2005, 00h59
  2. [Struts]comment faites-vous pour enregistrer..
    Par pouss dans le forum Struts 1
    Réponses: 7
    Dernier message: 30/09/2005, 12h55
  3. [IE]Comment fait-on un plug-in ?
    Par le Daoud dans le forum Windows
    Réponses: 2
    Dernier message: 13/04/2005, 18h54
  4. Réponses: 6
    Dernier message: 08/04/2005, 03h00
  5. [light] Comment fait-on une lumiere constante ?
    Par :GREG: dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/03/2004, 17h54

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