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 53 54 55 56 57 58 59 60 61 62
| %define BASE 0x100
%define KSIZE 10 ; nombre de secteurs de 512 octets a charger
[BITS 16]
[ORG 0x0]
jmp start
%include "UTIL.INC"
start:
mov [bootdrv], dl ; recuperation 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, msgboot
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
msgboot db 13,10,'A remplacer par le nom de l'OS',0
loadmsb db 13,10,'D', 130, 'marrage...',0
msgDot db '.',0
ChargeOK db 0
err db 13, 10, "Erreur ! Le Noyau ne peut ", 136, "tre d", 130, "marr", 130, ".",0
bootdrv: db 0
times 510-($-$$) db 0x90
SignatureMBR dw 0xAA55 |
Partager