LECTURE DU SCANCODE [TASM, PORT 60H, DÉTOURNEMENT D'INT]

Signaler
Messages postés
5
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
16 janvier 2003
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
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/15224-lecture-du-scancode-tasm-port-60h-detournement-d-int

Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
mikevador02 pour trouver l'int correspondant à une IRQ tu doit faire :

pour le 1er 8259 , numero d'IRQ + 8h : exemple IRQ6 (la disquette) 6h + 8h = 0Eh
pour le 2ième 8259 , numero d'IRQ + 70h : exemple IRQ14 (disk principal) 14h + 70h = 76h


Le 8259 est un controleur d'interruption.
Messages postés
65
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
11 septembre 2004

Bonjour et plop a vous :-)
En ce moment, je me suis lancé dans un projet delirant : ecrire un OS (tout petit :-) ).
J'ai une fonction print qui prend en argument un char* et deux int (position du texte a l'ecran).
Dans la foulée, je me suis dit qu'utilisé le clavier pourrait etre une bonne idée a l'utilisateur de mon Kernel (donc moi en gros :-) ).
Alors j'ai reussi a faire une macro en ASM qui ecoute sur le port 0x60 (clavier) et je detourne ce qu'elle raconte pour le faire afficher par la fonctione print.
Bon, premier resultat : le PC reagit quand j'appuis sur une touche (ca c'est bon !)
Deuxieme resultat : le PC n'affiche pas du tout ce que je tape au clavier, mais affiche des choses assez bizard....
Donc je recherche le moyen de convertir le code que je choppe (qui n'est pas beau du tout, je pense à de l'hexa, mais rien n'est moins sur) en joli charactere ascii pour le mettre dans un joli tableau et que ca fasse quelque chose de beau a l'ecran.
si quelqu'un a le courage de me repondre :-)
ZiNoTrOn
PS: j'ecrit en C mais la macro est bien en ASM
Messages postés
69
Date d'inscription
samedi 28 octobre 2000
Statut
Membre
Dernière intervention
15 octobre 2004

les interruptions sont géré par les 2 PIC du PC branché en cascade qui fait la correspondance IRQ-INT. En mode réel il existe effectivement une table de vecteur d'interruption que l'on appelle IVT (Interrupt Vector Table) chaque entrée correspond a une adresse FAR donc 4 octets, il y a 256 int donc la taille de la table est de 4*256= 1024 octets et elle commence à l'adresse 0000:0000 c'est d'ailleurs le pourquoi j'avais gs=0 et un offset = 09h*4 pour détourner l'int 09h
Oui bien sur que faire reset ça remet l'ancienne table, car cette table se situe dans la RAM
Messages postés
5
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
16 janvier 2003

Merci pour la reponse SCSI (rapide) :)
ha ok mais donc en fait chaques irq de base pointe sur une interuption alors? ex sir irq2 est attribuer au port com1 et qu'une donnee arrive dessus irq2 possède alors aussi une interuption? y a t-il des tables pour ceux-ci alors? j'ai celle de toute les interuptions.
Et donc qd on reset un pc c'est de nouveau l'ancienne table qui revient je suppose? Je suis debutant en asm
Afficher les 6 commentaires