Accueil > Forum > > > > secteur boot : afficher un message
secteur boot : afficher un message
mercredi 23 mars 2005 à 17:53:59 |
secteur boot : afficher un message

sajaris
|
bonjour je suis ADABLA et je debute en OS, il y a 1 semaine. je voudrai SVP, votre avis sur mon petit code de boot. En fait je voudrai afficher un message au demarrage mais je passe par une methode qui marche certes mais ne me plait pas beaucoup. Vous avez une autre methode? je vous envoie le code que j'utilise
[bits 16] [org 100h]
;*** cette partie me permet de sauver sur le secteur 1 de la disquette *** mov ax,0x00 mov dl,0x00 int 0x13 mov ax,0x301 mov bx,start mov dx,0x0000 mov cx,0x0001 int 0x13 ret ;*********************************************************
;********** partie qui est sauvée sur le secteur 1 ********* start:
mov ah,0h ; je rentre en mode graphique 320x200x256 mov al,13h int 10h
mov ah,0x0e ; je me prepare a ecrire un caractere mov bh,0x00 mov bl,0x07
message: mov al,'O' ; debut de mon message int 0x10 ; mais cela se fait caractere par caractere mov al ,'S' int 10h mov al,' ' int 0x10 mov al ,'V' int 10h mov al,'E' int 0x10 mov al ,'R' int 10h mov al,'S' int 0x10 mov al ,'I' int 10h mov al,'O' int 0x10 mov al ,'N' int 10h mov al,' ' int 0x10 mov al ,'1' int 10h mov al,'.' int 0x10 mov al ,'0' int 10h ; a partir d'ici je ne sais pas comment revenir a la ligne apres
times 510-($-start) db 0 db 0aah db 55h ;********************* fin *******************
voila le code. je precise que j'ai essayé ce code d'avord à partir du label message ci dessus:
message: msg db "OS version 1.0",10,13,0 mov si,msg
mov ah,0x0e mov bh,0x00 mov bl,0x07 continue: lodsb cmp al,0 je fin int 10h jmp continue fin:
times 510-($-start) db 0 db 0aah db 55h
et avec ce code ca ne marche pas du tout. Il n'affiche rien du tout.
Merci beaucoup de m'aider, vraiment
|
|
mercredi 23 mars 2005 à 18:52:37 |
Re : secteur boot : afficher un message

patatalo
|
salut,
tu ne creera jamais un secteur de boot avec une origine de 0x100. Le Bios charge ton mbr a l'offset 0x7C00. Donc il faut mettre [ORG 0x7C00]
ensuite, tu integre le binaire de ton mbr dans ton programme com.
de plus, il faut savoir que le code doit commencer a 0x7C00. Si tu met une chaine de caractere, tu cree un code aléatoire qui bien sur plantera a l'execution.
la bonne methode c'est: jmp moncode msg db "blablablabla",13,10,0 moncode: mov si,msg [ici c'est les mov et tout et tout]
ou alors:
moncode: mov si,msg [ici c'est les mov et tout et tout]
msg db "blablablabla",13,10,0
@++
|
|
jeudi 24 mars 2005 à 13:38:33 |
Re : secteur boot : afficher un message

sajaris
|
merci de ta reponse patatalo. je vais refaire mon code avec tes indications. Juste une précision. dois je initialiser mes segments (DS et ES): 1ere maniere: code: [bits 16] [org 0x7C00h] moncode: mov ax,cs mov ds,ax mov es,ax mov si,msg mov ah,0x0e mov bh,0x00 mov bl,0x07 continue: lodsb cmp al,0 je fin int 10h jmp continue fin: msg db "blablablabla",13,10,0
times 510-($-start) db 0 dw 0x0aa55h
ou 2eme maniere: code:
[bits 16] [org 0x7C00h]
moncode: mov ax,0x7C00 mov ds,ax mov es,ax
mov si,msg mov ah,0x0e mov bh,0x00 mov bl,0x07 continue: lodsb cmp al,0 je fin int 10h jmp continue fin: msg db "blablablabla",13,10,0
times 510-($-start) db 0 dw 0x0aa55h
ton aide m'es vraiment necessaire. Je te met au courant des resultats de ton aide.
|
|
jeudi 24 mars 2005 à 18:16:44 |
Re : secteur boot : afficher un message
|
jeudi 24 mars 2005 à 18:46:15 |
Re : secteur boot : afficher un message

sajaris
|
slt, j'irai jeter un coup d'oeil sur ce site, je le connaissait deja, mais je vais le relire. Pour revenir a mon probleme, j'ai fait ce que tu dis. Ca ne plante plus, OK. Mais aucun message. ca charge mon secteur, ca passe en mode gtaphique 320x200x256( refere premier code plus haut) et plus rien. Le trou noir. j'ai juste fait: [BITS 16] [ORG 0x7C00] ;*** cette partie me permet de sauver sur le secteur 1 de la disquette *** mov ax,0x00 mov dl,0x00 int 0x13 mov ax,0x301 mov bx,start mov dx,0x0000 mov cx,0x0001 int 0x13 ret moncode:
mov ah,0h ; je rentre en mode graphique 320x200x256 mov al,13h int 10h
mov si,msg [les movs.....]
msg db "blablablabla",13,10,0 times 510-($-start) db 0 dw 0x0aa55h
je soupsonne le code qui charge sur le premier secteur mbr, mais quant j'affiche caractere pas caracter c'est OK, mais enervant si le message est long. Je ne voudrai surtout pas t'embeter, mais tu n'aurais pas un code simple qui fonctionne, un code pour NASM? SVP ne vous faché pas pour des trucs aussi simple, c'est important pour moi.
|
|
vendredi 25 mars 2005 à 12:30:30 |
Re : secteur boot : afficher un message

patatalo
|
re,
voilà un code mbr de disquette commun qui charge un kernel stocké a partir du secteur 2: une fois compilé, nous l'appelerons mbrD7.bin
[ORG 0] [BITS 16] %define pb byte %define pw word %define pd dword
%define pushb push byte %define pushw push word %define pushd push dword
start: jmp .mbrcode nop .name db "TOMFAT " .SecSize dw 512 .ClustSize db 1 .RsvdCnt db 1 .FatCnt db 2 .RootCnt dw 224 .TotSec16 dw 2880 .Media db 0xF0 .FatSize16 dw 9 .TrkSize dw 18 .HeadCnt dw 2 .HiddCnt dd 0 .TotSec32 dd 0 .DrvNum db 0 .Reserved1 db 0 .BootSig db 0 .mbrcode mov ax,0x7F0 mov dx,0x7C0 cli mov ss,ax xor sp,sp mov es,ax mov ds,dx sti cld
pushw 5 pushw [kernsize] pushw 0x100 pushw 0 pushw 2 mov bp,sp
lea si,[azlk] call outs
.0 dec pw[bp+8] je .4 .1 lea si,[azpt] call outs mov ax,0x201 mov bx,[bp+4] mov dx,[bp+2] mov cx,[bp] int 0x13 jc .1 cmp pb[bp],18 jne .2 inc pb[bp+1] and pb[bp],0 .2 cmp pb[bp+1],80 jne .3 and pw[bp],0 inc pb[bp+3] .3 inc pb[bp] add pw[bp+4],0x200 dec pw[bp+6] jne .1
add sp,10
lea si,[azok] call outs
push ss push ss pop ds pushw 0x100 xor ax,ax xor bx,bx xor dx,dx xor cx,cx xor si,si xor di,di xor bp,bp retf
.4 lea si,[aznok] call outs xor ax,ax int 0x16 int 0x19
outs: cmp pb[si],0 mov al,[si] je .1 mov ah,0xE int 0x10 inc si jmp outs .1 ret azpt: db ".",0 azlk: db "Load kernel",0 aznok: db "n" azok: db "ok",13,0
times (508-($-start)) nop kernsize: dw 0 db 0x55,0xAA
voilà le code qui permettra de creer la d7 boot et que nous appelerons une fois compilé mkboot.com:
%define pb byte %define pw word %define pd dword
%define pushb push byte %define pushw push word %define pushd push dword
[BITS 16] [ORG 0x100] mkboot: mov pw[bootdata+0x1FC],((kernpad-kerndata)/512)+1 lea bx,[bootdata] mov dx,0 mov ax,0x301 mov cx,1 int 0x13 jc mkboot
pushw ((kernpad-kerndata)/512)+1 pushw kerndata pushw 0 pushw 2 mov bp,sp
.1 mov ax,0x301 mov bx,[bp+4] mov dx,[bp+2] mov cx,[bp] int 0x13 jc .1 cmp pb[bp],18 jne .2 inc pb[bp+1] and pb[bp],0 .2 cmp pb[bp+1],61 jne .3 and pw[bp],0 inc pb[bp+3] .3 inc pb[bp] add pw[bp+4],0x200 dec pw[bp+6] jne .1 add sp,8 ret
bootdata: incbin "mbrD7.bin" kerndata: incbin "kernel.com" kernpad: times 512 nop kernend:
le fichier batch pour compiler tout ça: \bin\nasm.exe -f bin -o mbrD7.bin mbrD7.asm \bin\nasm.exe -f bin -o kernel.com kernel.asm \bin\nasm.exe -f bin -o mkboot.com mkboot.asm
cela te permettra de créer et charger un kernel d'une taille max de 60Ko environ.
@++
|
|
vendredi 25 mars 2005 à 14:19:12 |
Re : secteur boot : afficher un message

sajaris
|
re,
merci, je vais etudier ce code de tres pres. Avec un chargement de kernel c'est un peu plus compliqué pour moi mais pas impossible, je voulais d'abord comprendre le chargement d'une chaine de caractere simple. Je suis content d'avoir en plus un chargement de kernel. Comme on le dis chez nous (chez d'autres aussi) tu m'a donné le beurre et l'argent du beurre. Mais bien sur attends toi a d'autres questions mais cette fois ci elles refleteront une evolution que tu m'a apporté. Merci PATATALO. see you
|
|
vendredi 25 mars 2005 à 18:03:50 |
Re : secteur boot : afficher un message

sajaris
|
je crois que vous aurez du commenter un peu votre code, il y a trop de  dans ma tete.... le l'ai imprimé pour mieu l'exploiter. mais j'ai compris le principe, enfin je crois : -declaration des variables à labels .name db "TOMFAT" .................... .Bootsig db 0
-puis initialiser les registres segments en desactivant les interruption (CLI) la pile va de 0h à 7F0h (mais je pensais que ss contenait la faible valeur (0h) et sp la grande valeur ( 7C0h), et vous avez fait l'inverse. A moins que ca n'ai pas d'importance. es et ds pointe vers 07C0h, où est chargé mon secteur lors du boot, si j'ai bien compris vos explication. -mais pourkoi : cld pushw 5 pushw [kernsize] pushw 0x100 pushw 0 pushw 2 mov bp,sp
la fonction outs sert à imprimer tout ce qui est texte sur l'ecran. - on affiche apres "Load kernel"
-pw[bp+8] signifie word[bp+8] si je ne me trompe pas. mais j'ai pas bien compris les bp+4 ou bp+8 etc. voila c'est tout pour le mbrD7.bin pour le mkboot.com, alors là c'est la cata. pourkoi heuuu !!!, pourkoi toutes instructions? et pourtant c'est la partie que je veux surtout comprendre pour charger mon mbr, car bochs ne marche pas bien chez moi. Merci de prendre de temps en temps votre temps pour m'expliquer et aussi me donner des codes, je serai peut etre utile plus tard. Ne vous decouragé pas je vais finir par comprendre et reussir.  . a bientot PATATALO
|
|
jeudi 31 mars 2005 à 20:02:59 |
Re : secteur boot : afficher un message

sajaris
|
merci beaucoup de ton aide. J'ai passé mon temps à etudier ton code et d'autres encore. En fait le probleme est que j'inclus le code qui charge sur le premier secteur dans le meme fichier que le code du boot. Je les ai separé en deux fichier comme tu l'a fait: boot.bin et mkboot.com. Je t'envoie les sources. Franchement merci. le resultat est cool. et comme c'est mon premier boot diskette, je suis content . peut etre que mon code sera util a d'autres.
Je vous envoie les sources que vous verrez. j'espere que cela va aidez ceux qui sont deja dans le meme probleme que moi, a s'en sortir.  au fait comment on envoie les sources zippées ou dois je ecrire le code directement ici?
|
|
Cette discussion est classée dans : message, int, mov, al, 10hmov
Répondre à ce message
Sujets en rapport avec ce message
Affichage de l'heure a partir du BIOS [ par FearBlue ]
Slt a tous !!!!Je debute en ASM et je desirerais afficher l'heure a partir de la lecture de l'heure du biosje vous montre mon code !!!!
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
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
un code en assembleur [ par tatouna ]
salut à tous, je suis débutante en asm donc j'ai un problème et je souhaite que vous m'aidiez j'ai une chaine de caractère (une date) et je veut la p
Affichage de texte [ par ghuysmans99 ]
Bonjour à tous,Je suis en train de créer un OS (pour l'instant, 16 bits) et mes routines d'affichage ne fonctionnent pas ...Voilà le code en question
probleme d'affichage d'une soustraction [ par calimerros ]
[u]Bonjour à tous et à toutes.[/u] Voici un programme que je réalise et je bloque au niveau de l'affichage d'une soustraction (SUB). Pour moi mon pr
Affichage décroissant et alphabétique de 2 listes(Nom_Prénom et Note) [ par m_didi9 ]
[code=autre]Data SEGMENT Mess1 DB 10,13, 'Entrez la liste des Noms :' DB 10, 13, '$' Mess2 DB 'Entrez la liste des Notes :' DB 10, 13, '$' Mess3
Lecture de DTA [ par mouadestla ]
Bonsoir , je débute en assembleur , j'esseye de coder en 16 bits un petit programme qui fait appele à l'interuptions 21h : 4Eh du DOS qui cherche un f
Mon fichier Mp3 [ par li2k ]
Salut!J'aimerai créer en assembleur un programme qui lance la lecture d'un fichier mp3 (Juste pour faire mon réveil personnalisé sur ordi)Mais bon le
AT&T erreur de compilation etc... [ par maminovadu75 ]
Bonjour, j'aimerais me mettre a l'assembleur mais j'ai quelque problème.voici mon code morceau de code pour trier un tableau de int : ( mélange de C/C
Livres en rapport
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE
Forum
RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 RE : ASSEMBLEURRE : ASSEMBLEUR par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 ASSEMBLEURASSEMBLEUR par solleil
Cliquez pour lire la suite par solleil
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|