Bonjour,
voilà j'ai essayer de suivre le tut de inferno sur les OS
et donc le boot sur la disquette est ok !
mais dès que je veux mettre un kernel il ne le lit pas et en plus il me met l'affichage du message de boot.asm en boucle infini !!!
je comprends pas trop pourquoi !
j'ai fais tout ce qu'il est expliqué pourtant !
voici les sources :
Boot.asm :
et enfin le kernel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 %define BASE 0x100 %define KSIZE 1 ; nombre de secteurs de 512 octets a charger [BITS 16] [ORG 0x0] jmp start %include "UTIL.INC" start: mov [bootdrv],dl ; recuparation de l'unite de boot ; initialisation des segments en 0x07C0 mov ax,0x07C0 mov ds,ax mov es,ax mov ax,0x8000 ; stack en 0xFFFF mov ss,ax mov sp, 0xf000 ; affiche un msg mov si,msgDebut call afficher ; charger le noyau xor ax,ax int 0x13 push es mov ax,BASE mov es,ax mov bx,0 mov ah,2 mov al,KSIZE mov ch,0 mov cl,2 mov dh,0 mov dl,[bootdrv] int 0x13 pop es ; saut vers le kernel jmp dword BASE:0 msgDebut db "Chargement du kernel",13,10,0 bootdrv: db 0 ;; NOP jusqu'a 510 times 510-($-$$) db 144 dw 0xAA55
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 [BITS 16] [ORG 0x0] jmp start %include "UTIL.INC" start: ; initialisation des segments en 0x100 mov ax,0x100 mov ds,ax mov es,ax mov ax,0x8000 ; stack en 0xFFFF mov ss,ax mov sp, 0xf000 ; affiche un msg mov si,msg00 call afficher end: jmp end msg00: db 'Kernel is speaking !',10,0
puis le fichier util.inc
voilà seulement je suis sous win98 + nasm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 ;--------------------------------------------------------- ; Synopsis: Affiche une chaine de caracteres se terminant par 0x0 ; Entree: DS:SI -> pointe sur la chaine a afficher ;--------------------------------------------------------- afficher: push ax push bx .debut: lodsb ; ds:si -> al cmp al,0 ; fin chaine ? jz .fin mov ah,0x0E ; appel au service 0x0e, int 0x10 du bios mov bx,0x07 ; bx -> attribut, al -> caractere ascii int 0x10 jmp .debut .fin: pop bx pop ax ret
et je complie bien les 2
nasm -f bin -o boot boot.asm
nasm -f bin -o kernel kernel.asm
puis je fais :
debug boot
-w cs:100 0 0 1
-q
puis copy kernel a:
et enfin copy util.inc a:
sous dos je n'arrive pas à faire ce signe "\"...
si quelqu'un vois le problème...merci de m'aider ce serait sympa !
bye
Partager