add inb function and doc

This commit is contained in:
rick 2023-09-14 20:37:04 +02:00
parent 0f77e1a450
commit 84c5da93a7
Signed by: Rick
GPG key ID: 5CBE8779CD27BCBA
2 changed files with 33 additions and 3 deletions

View file

@ -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 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 envoyer les données
* @return la valeur lue
*/
unsigned char inb(unsigned short port);
#endif #endif

View file

@ -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