CYZE PRODUCTION
VOUS PRESENTE LE COURS SUR LES MICROPROCESSEURS ET LEURS FABRICANTS
Tél : (00229) 96 15 81 18 E-mail : cyze2002@yahoo.fr / cyze2002@hotmail.com
CYZE PRODUCTION
Détecter les contrôleurs
Pour savoir si un contrôleur est présent, il faut tester ces ports. Sur certains système, un port non attribué renverra
toujours 0xff. Malheureusement, un port attribué peut aussi renvoyer 0xff et sur certains systèmes, la valeur est
aléatoire. Vérifer cette valeur n’est donc pas un moyen sûr de détecter la présence d’un contrôleur.
Une autre méthode est de modifer la valeur d’un port en lecture/écriture et de vérifer ensuite que la modifcation a
été effectuée.
Le registre de lecteur et de tête est en entrée/sortie. Aussi, il peut être utilisé pour cette opération :
§ Lecture du disque actuellement sélectionné :
movw $PORT_HEAD_AND_DISK, %dx // 0x1f6, 0x176, 0xf6 ou 0x76 selon le contrôleur testé
inb %dx, %al
movb %al, %bl
andb $0x10, %bl
shrb $4, %bl
BL contient maintenant 0 (Maître) ou 1 (Esclave)
§ Sélection de l’autre disque :
cmpb $0, %bl
jz setslave
jmp setmaster
setmaster:
andb $0xef, %al
jmp set
setslave:
orb $0x10, %al
set:
outb %al, %dx
§ Relecture du disque actuellement sélectionné :
inb %dx, %al
andb $0x10, %al
shrb $4, %al
AL contient maintenant 0 (Maître) ou 1 (Esclave)
§ Comparaison : avant (BL) et maintenant (AL) :