add inb function and doc
This commit is contained in:
parent
0f77e1a450
commit
84c5da93a7
2 changed files with 33 additions and 3 deletions
21
include/io.h
21
include/io.h
|
@ -1,6 +1,27 @@
|
||||||
|
/** @file io.h
|
||||||
|
* Fichier d'en-tête pour les entrées sorties.
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef IO_H
|
#ifndef IO_H
|
||||||
#define IO_H
|
#define IO_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction pour pouvoir envoyer des données à un port.
|
||||||
|
*
|
||||||
|
* Elle est définie dans le fichier @c io.s.
|
||||||
|
*
|
||||||
|
* @param port le port où envoyer les données
|
||||||
|
* @param data les données
|
||||||
|
*/
|
||||||
void outb(unsigned short port, unsigned char data);
|
void outb(unsigned short port, unsigned char data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction pour pouvoir lire une donnée d'un port.
|
||||||
|
*
|
||||||
|
* Elle est définie dans le fichier @c io.s.
|
||||||
|
*
|
||||||
|
* @param port le port où envoyer les données
|
||||||
|
* @return la valeur lue
|
||||||
|
*/
|
||||||
|
unsigned char inb(unsigned short port);
|
||||||
#endif
|
#endif
|
||||||
|
|
15
src/io.s
15
src/io.s
|
@ -1,11 +1,20 @@
|
||||||
global outb
|
global outb
|
||||||
|
global inb
|
||||||
|
|
||||||
; permet de communiquer avec des ports
|
; permet de communiquer avec des ports
|
||||||
; pile : [ esp + 8 ] la valeur à écrire
|
; pile : [ esp + 8 ] la valeur à écrire
|
||||||
; [ esp + 4 ] le port
|
; [ esp + 4 ] le port
|
||||||
; [ esp ] l'adresse de retour
|
; [ esp ] l'adresse de retour
|
||||||
outb:
|
outb:
|
||||||
mov al, [esp + 8]
|
mov al, [esp + 8]
|
||||||
mov dx, [esp + 4]
|
mov dx, [esp + 4]
|
||||||
out dx, al
|
out dx, al
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
; permet de récupérer la valeur d'un port
|
||||||
|
; pile : [ esp + 4 ] le port
|
||||||
|
; [ esp ] l'adresse de retour
|
||||||
|
inb:
|
||||||
|
mov dx, [esp + 4]
|
||||||
|
in al, dx
|
||||||
|
ret
|
||||||
|
|
Loading…
Reference in a new issue