Chargement d'un noyau

Signaler
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007
-
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007
-
Je suis en train de coder un OS simple pour comprendre le principe. Le secteur de boot est écrit comme il convient sur le premier secteur de ma disquette. Grâce à l'interruption 13h 02h, le programme lit le second secteur où se trouve un noyau pour test (il tient sur moins de 512 Octets donc 1 seul cluster). Or, quelle doit être l'adresse mémoire où doit être stocké pour exécution le noyau sachant que le boot lui fut placé en 0000:7C00 ? Voici la structure propre à l'interruption (ce que je veux c'est ES:BX)

AH = 02h
AL = Nombre de secteurs à lire (au minimum 1).
CH = Numéro de la piste (1 à 80).
CL = Numéro du premier secteur (1 à 18).
DH = Numéro de la tête de lecture (0 ou 1).
DL = Numéro du lecteur (par défaut 0).
ES:BX = Adresse de notre buffer en mémoire.

Merci beaucoup pour votre aide. ++

2 réponses

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

n'importe quelle adresse < 1Mo peut etre utilisée sauf:
0000:7C00-0000:7DFF -> code de boot
0000:0000-0000:03FF -> table d'interruption
0000:0400-0000:05FF -> données bios
9000:FC00-9000:FFFF -> données bios etendues
A000:0000-A000:FFFF -> memoire video graphique
B000:0000-B000:FFFF -> memoire video text
C000:0000-F000:FFFF -> bios & extentions bios

ES=0000h,BX=7E00h devrait convenir et tu peut considerer ton code dans le mode FLAT ( cs=ds=ss=es )

si tu modifie ton segment, pense a faire un jmp far afin de corriger ton segment cs

ton code boot finira comme ça:

xor dx,dx ; ide0 maitre
mov ax,0201h ; lecture 1 secteur
mov bx,7e00h
mov cx,2 ; lecture secteur 2
mov es,dx
int 13h
jc error
jmp 7e00h

@++
Messages postés
255
Date d'inscription
samedi 20 avril 2002
Statut
Membre
Dernière intervention
16 janvier 2007

Merci beaucoup pour ton aide précieuse. L'ensemble de tes informations me seront tres utiles. Encore merci et ++