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 :

Fonctionnement INT 21h fonction 2Ch


Sujet :

x86 16-bits Assembleur

  1. #1
    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 Fonctionnement INT 21h fonction 2Ch
    Bonjour à tous,

    J'utilise la fonction 2Ch de l'interruption DOS 21h pour calculer la durée d'exécution
    d'un programme. Cette fonction renvoie l'heure au 100ème de seconde. Or, l'horloge système
    n'est pas assez précise (valeur à la seconde).

    Quelqu'un pourrait-il me dire comment s'y prend DOS pour avoir une telle précision ? Car j'ai bien pensé à utiliser le TIMER0 mais ce dernier ne 'bat' qu'à 18.2Hz

    Ou alors il faut paramétrer le TIMER2 en compteur et aller le lire avec l'IRQ8 déclenchée
    par le TIMER0 ? ...pfff... compliqué tout ça !

  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
    on peut aussi reprogrammer le timer0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    cli                         ;programme le temporisateur
    mov dx,43h                  
    mov al,36h                  ;paramˆtres de comptage
    out dx,al
    jmp $+2
    mov dx,40h                 ;diviseur de fr‚quence de l'irq 0 (LSB en premier)
    mov ax,2983                ;1193200/f  ;11932: t=10ms  100Hz
    out dx,al                               ;5966: t=5ms    200Hz
    jmp $+2                                 ;2983: t=2.5ms  400Hz
    mov al,ah                  ;puis le MSB
    out dx,al
    sti

  3. #3
    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
    Exact ! j'avais fait ça à une époque pour contrôler un jeu de limières

    Mais il faut que la nouvelle interruption n'appelle l'ancienne que 18.2 fois par seconde
    comme à l'origine... j'avais du oublier 2 ou 3 trucs car ça me modifiait l'heure du DOS
    (mais pas la RTC)

    merci en tout cas

Discussions similaires

  1. Problème de segmentation (fonction 02h INT 21h)
    Par william17 dans le forum Assembleur
    Réponses: 2
    Dernier message: 21/12/2011, 11h59
  2. [.COM] Réserver de la RAM fct 48h int 21h
    Par bulerias dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 06/12/2010, 15h33
  3. Réponses: 4
    Dernier message: 25/11/2008, 19h03
  4. [NASM] Int 21h qui ne fonctionne pas sur mon mini OS
    Par andromeda dans le forum Assembleur
    Réponses: 4
    Dernier message: 07/04/2007, 19h03
  5. Int 21H AX=716Ch ne fait pas mon affaire !!
    Par TheBigMac dans le forum Assembleur
    Réponses: 4
    Dernier message: 10/09/2004, 21h51

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