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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| [BITS 16]
jmp start
db "CREATOS01"
dw 2352
db 1
dw 1
db 2
dw 224
dw 2880
db 0xF0
dw 9
dw 18
dw 2
dw 0
dw 0
db 0
db 0
db 0x29
start:
cli ; désactive les interruption car le processeur déteste qu'on touche au segment, il pourrait déclencer une interruption
mov ax, 0x07C0
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax ; tous les segments de donées sont initialisés
mov ax, 0x6000
mov ss, ax ; le bas de la pile est à l'adresse 0x6000:0
mov sp, 0xFFFF ;et la pile à une taille de 0xFFFF octet, donc le somment de la pile est à l'adresse 0x6000:0xFFFF
sti ;réactive les interruptions
mov ax, 0003h ;ah contient le numero de fonction, al le paramètre
int 10h
;Une routine qui charge un kernel de 512 octet en mémoire à l'adresse logique 2000:0000
mov ax, 2000h
mov es, ax ; pour lint 13h
mov ah, 02h ; numero de fonction de lint 13h, 02h pour lire des secteurs
mov dl, 00h ; (le lecteur disquette A correspond à 00h, le B à 01h, le disque dur 1 à 80h, le disque dur 2 à 81h)
mov dh, 1 ; numero de face
mov ch, 0 ; numero de piste
mov cl, 16 ; numero de secteur
mov al, 01h ; un seul secteur à lire car le kernel ne fait que 2350 octet ou moins
mov bx, 00h ;pas d'offset
int 13h ;appel de l'interruption
jmp 2000h:0000h ; execution du kernel
times 2350-($-$$) db 90h; rempli le fichier compile jusqu'au 2350 ème octet
db 0x55 ; magic
db 0xAA ; word |
Partager