BIBLIOTHEQUE POUR LE 8086

Signaler
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43150-bibliotheque-pour-le-8086

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
RDTSC introduit depuis le Pentium.

"...justifié par le soucis d'oublier..."
c'est une philo pour usagers des langages interprétés mais qui n'est pas de mise en ASM. Si on ne vise pas les perfs optimales, il faut faire du VB.
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
re,



suivant le processeur:
1 - hooker l'interuption 8 afin de comptabiliser les impulsions d'horloge. La fonction delay sauvegarde le nombre d'impulsion courant, y ajoute dx et retourne la main une fois que le nombre d'impulsion courant est égal ou dépasse la valeur calculée. L'interruption 8 etant appelée de maniere régulière toutes les 18,2 ms (si mes souvenirs sont bons). Il est également possible de reprogrammer la rtc pour avoir une fréquence différente mais en prennant soin d'appeler l'interruption 8 d'origine toute les 18,2 ms quand meme.

2 - utiliser la commande processeur qui permet d'obtenir le nombre de tics interne mais dont je ne me rappelle plus le nom.


la première solution étant compatible avec tout les PC.

@++
Messages postés
2
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 juin 2007

re;


toute à fait d'accord avec vous à ce qui concerne la fonction delay,mais l'utilsation de 'popa' et 'pusha',est justifié par le souci d'oublier de "depiler" à la fin,...

se servire du balayage de l'écran,avais pour but de réaliser une temporisation plus stable ;sinon qu'est ce que vous proposz comme solution ;

@++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
re,


Pour finir:

1 - Ce n'est pas le programme appelant qui défini les registres utilisés dans ta fonction lib donc que tu copie l'ensemble ou une seule de tes fonction, le probleme reste le meme pour l'utilisation de "pusha" "popa".

2 - Ta fonction delay n'est pas a 60Hz mais est dépendante de la fréquence de ton écran, moi j'ai le choix:60Hz,70Hz,72Hz,75Hz, mais des ecrans peuvent monter beaucoup plus suivant la résolution choisie, ce qui rend ton delay de durée imprévisible et le paramètre passé n'as pas d'unité possible.

3 - "par exp, on peut par exp au lieu de mettre le parametre dans DX on peut passer l'adresse d'une case memoire(qui contiendrais notre fameux n ==>n/60 s) via bx".

Pourquoi utiliser bx qui etait auparavant inutilisé dans cette fonction alors que cx l'est, tu ne reponds pas à la question.
Pourquoi utiliser une case memoire et bx au lieu de passer le paramètre par la pile comme il est habituellement fait pour toutes fonctions ?

tout simplement:

delay: ;temporisation ,paramettre ==>CX
push ax
push dx
push cx
mov dx,03DAh
.1
in al,dx
and al,00001000b
jnz .1
.2
in al,dx
and al,00001000b
jz .2
loop .1
pop cx
pop dx
pop ax
ret

non ?

@++
Afficher les 7 commentaires