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 :

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
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
[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
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
voilà seulement je suis sous win98 + nasm
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