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 :

BIOS - WAIT (AT,PS)


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut BIOS - WAIT (AT,PS)
    Salut à tous,

    En regardant quelques sources en assembleur x86, je suis tombé plusieurs fois sur ce genre de timer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     mov ah,86H
      int 15H
    Donc en cherchant dans une liste d'interruptions, j'ai pu voir que ça correspondait à un "BIOS - WAIT (AT,PS)". L'intervalle d'attente se plaçant dans CXX (en microsecondes).

    J'ai fait quelques tests, et apparemment ça ne fonctionne pas. D'ailleurs, j'ai compilé quelques projets asm d'un iut (des petits jeux). Ils utilisaient tous cette fonction du bios et après "compilation", sur mes deux ordis (un P2 et un P4), les jeux sont excessivement rapides.

    Je me demandais donc si cette fonction était devenu inutilisable avec les PC actuels ou est-ce que j'ai raté un épisode?

    Merci d'avance

  2. #2
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Je n'ai pas de réelle réponse à donner, juste que j'ai réussi a faire des petites tempos grâce à cette fonction, mais que je n'ai pas réussi à trouver comment régler la durée de celle-ci...

    Reste que dans ma liste d'INT, j'ai : "not designed for user application usage"...

  3. #3
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Ok merci, je crois que je vais pas trop m'attarder là-dessus et plutôt me tourner vers une autre méthode.

  4. #4
    Membre expérimenté
    Avatar de Juju_41
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2003
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2003
    Messages : 974
    Points : 1 557
    Points
    1 557
    Par défaut
    Je me suis souvent penché sur les problèmes de Timers ... sous DOS la meilleure solution que j'ai trouvé était la l'utilisation de l'IRQ 0 : l'horloge système, ou de l'interruption 1Ch (qui découle de l'IRQ 0). Cette dernière est préférable car elle permet de garder une horloge système "à l'heure". Ces 2 interruptions sont par défaut appelées 18,2 fois par seconde quelque soit la fréquence du processeur. On peut cepandant modifier la fréquence d'appel de cette interruption. J'ai pas la doc sous les yeux mais je peux la retrouver, si tu as besoin.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Dans la source menuetOS j'ai trouvé ça :
    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
     
    ; delay in 1/1000 sec
     
    delay_ms:
     
            push  eax
            push  ecx
     
            mov   ecx,esi
            imul  ecx,66
     
            in    al,0x61
            and   al,0x10
            mov   ah,al
            cld
     
     cnt1:  in    al,0x61
            and   al,0x10
            cmp   al,ah
            jz    cnt1
     
            mov   ah,al
            loop  cnt1
     
            pop   ecx
            pop   eax
     
            ret
    esi est un paramètre d'entrée

    Mais j'arrive pas à trouver des infos sur le bit 4 du port 61h

Discussions similaires

  1. Le BIOS et son utilité
    Par le mage tophinus dans le forum Assembleur
    Réponses: 75
    Dernier message: 21/11/2003, 16h37
  2. Int 00h : initialisée par le BIOS ou par l'OS ?
    Par Blustuff dans le forum Assembleur
    Réponses: 19
    Dernier message: 24/09/2003, 10h21
  3. Comment désassembler le BIOS
    Par Isis dans le forum Assembleur
    Réponses: 15
    Dernier message: 11/07/2003, 00h15
  4. Créer un Bios ???
    Par veillas dans le forum Assembleur
    Réponses: 9
    Dernier message: 30/04/2003, 13h45
  5. Afficher la zone de données du BIOS
    Par foussa dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 20/01/2003, 17h47

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