Cyze production vous presente le cours sur les microprocesseurs


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) :

Laisser un commentaire