begin process at 2012 05 25 05:03:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Autres asm

 > 

Kernel qui n'est pas chargé par le bootloader


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Kernel qui n'est pas chargé par le bootloader

samedi 30 juillet 2005 à 16:35:23 | Kernel qui n'est pas chargé par le bootloader

JB_59


Salut tout le monde !

Voilà j'ai un problème de chargement de Kernel; j'ai codé un boot loader en asm qui m'affiche la phrase "Chargement du kernel..." et appelle celui-ci; puis le Kernel affiche la phrase "Le Kernel parle !". Seulement après la compilation avec nasm et le liage par DOS(type kernel >> bootsector), je l'affiche avec bochs et la j'ai en boucle la phrase "Chergement du Kernel...". Voilà mes sources :

Bootsector :
%define BASE 0x100
%define KSIZE 2  ; Nombre de secteurs de 512 octets a charger

[BITS 16]
[ORG 0x0]

; Initialisation des segments
mov ax, 0x07C0
mov ds, ax ; Data segment en 7C00h
mov es, ax ; Extra segment en 7C00h
mov ax, 0x8000 ; Réglage de stack
mov ss, ax
mov sp, 0xF000

mov [bootdrv],dl ; recuparation de l'unite de boot

; Affichage du message
mov si, welcome ; On met la variable qui contient le message dans le registre SI
call write  ; On appelle la fonction qui va écrire le message

; Charger le noyau
xor ax, ax
int 0x13

push es
mov ax, BASE  ; L'int 13h charge le(s) secteur(s) en es:bx
mov es, ax
mov bx, 0

mov ah, 2   ; Fonction de lecture
mov al, KSIZE
mov ch, 0   ; Numéro de piste
mov cl, 2   ; Numéro du secteur de départ pour la lecture
mov dh, 0   ; Numéro de face
mov dl, [bootdrv]  ; Numéro du lecteur
int 13h
pop es

; Saut vers le kernel
jmp dword BASE:0

; Fonctions
write:
.debut:
lodsb  ; Met le premier octet du contenu de l'adresse SI dans AL et incrémente SI
cmp al, 0
jz .fin
mov ah, 0x0E ; Avec l'interruption 0x10 et le caractere en AL, ça écrit à l'écran
int 0x10
jmp .debut
.fin:
ret; Retour au code

; Donnees
welcome db "Chargement du kernel...", 13, 10, 0

bootdrv: db 0


times 510-($-$$) db 0
dw 0xAA55; Signature pour le boot

Kernel :

[BITS 16]
[ORG 0x100]

; 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


; Affichage du message
mov si, speak; On met la variable qui contient le message dans le registre SI
call write; On appelle la fonction qui va écrire le message

; Boucle infinie pour ne pas que le bootsector ne fasse n'importe quoi à la fin
jmp $-2

; Fonctions
write:
.debut:
lodsb ; Met le premier octet du contenu de l'adresse SI dans AL et incrémente SI
cmp al, 0
jz .fin
mov ah, 0x0E ; Avec l'interruption 0x10 et le caractere en AL, ça écrit à l'écran
int 0x10
jmp .debut
.fin:
ret; Retour au code

;DONNEES
speak db "Le Kernel parle !", 13, 10, 0

dimanche 31 juillet 2005 à 12:42:15 | Re : Kernel qui n'est pas chargé par le bootloader

vinc1008881

Salut,

je ne comprends pas tres bien ceci :

"Seulement après la compilation avec nasm et le liage par DOS(type kernel >> bootsector)"

yas pas besoin de linkage ici...=> tu compile le bootsect avec nasm et tu ecrit le binaire sur le secteur 0 de ta disquette
                                              =>tu compile le "kernel" avec nasm et tu ecrit le binaire sur le secteur 2 de ta disquette

utilise ramwrite pour ecrire sur les secteur disquette...

@+ , vinc1008881

le goto, c'est comme un parachute, tu l'utilise jamais mais quand t'en as besoin...

dimanche 31 juillet 2005 à 14:31:49 | Re : Kernel qui n'est pas chargé par le bootloader

JB_59



Je fais ça pour tester sous bochs =)
dimanche 31 juillet 2005 à 15:37:31 | Re : Kernel qui n'est pas chargé par le bootloader

JB_59


En fait, c'est pas du liage, c'est de la concaténation. xmais le principe est  là.
mercredi 3 août 2005 à 12:46:52 | Re : Kernel qui n'est pas chargé par le bootloader

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

ce source n'as pas été compilé avec nasm. ( int 13h -> impossible )

@++
mercredi 3 août 2005 à 12:47:59 | Re : Kernel qui n'est pas chargé par le bootloader

patatalo

Membre Club Administrateur CodeS-SourceS

re,

jmp dword BASE:0 -> jmp word BASE:0

@++

samedi 20 juin 2009 à 23:30:53 | Re : Kernel qui n'est pas chargé par le bootloader

asma20vs

salut tt le monde
je désire votre aide dans un probleme ke j'arrive pas a résoudre meme je comprends pas comment je dois faire le pas..
je veux créer une disquette bootable sous emu8086 qui affiche un message lors de démarrage du systeme
pouvez-vous m'aider svp..
merci pour votre attention


Cette discussion est classée dans : mov, ax, al, kernel, 0x100


Répondre à ce message

Sujets en rapport avec ce message

probleme de conversation de hexa en ascii [ par wapiti ] voici le programme qui converti du binaire en ascii.model small.stack;-------------------------------------------------------------------------------- Multiplication de deux nombres compris entre 0 et 99 en assembleur [ par petitspirou ] salut, j'ai un programme a faire mais je suis nul en assembleur, voici ce que j'ai fais mais ca ne fonctionne pas.Quelqun peut'il me le corriger et me erreur dans le boot + kernel [ par hudson ] 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 probleme avec un bootloader [ par anonyme_man_in_this_world ] salut !! je voudrais coder un bootloader , tous ce compile bien ,je copie / colle le fichier .BIN dans une disquette ,mais lors le redemmarrage d fatal error LNK1190 [ par WildChild54 ] Bonjour à tous!Eh bien voilà, je voudrais créer un petit programme affichant l'heure (je sais il y en a déjà plusieurs qui en ont parlé ici) mais j'ai Deplacement [ par FireMan57 ] Bonjour, je débute en asm x86 et j'aimerais savoir comment faire pour effectuer correctement le déplacement d'un personnage en mode graphique. J'ai dé question sur le language asm [ par dyroj ] bonjour,j'ai qulque question sur l'asm :-quand je fait un : mov ax, 10 , quesqui va dans le registre (ladresse de 10 dans la ram, ou 10).-pourquoi se message d'erreur [ par kaka83185 ] slt a tous, je suis débutant en langage assembleur,j'essaye de faire mon premier programme en MASM, et c'est en fait l'addition d'un nombre avec un au tp assembleur i3 pour la FST [ par babbiverus ] main proc mov ax,@Datamov ds, axmov si,offset tabmov cx, 16mov bx,0saisie:  mov dx,offset commande;afficher "saisir un nombre"mov ah,9int 21hmov ah, 1


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,182 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales