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
Addition ASM [ par GibsonUSA ]
Bonjour a tous, je débute en ASM 16bits et je bloque pour faire une addition de deux chiffres saisis par l'utilisateur. Voila ce que j'ai fais. A l'
PROGRAMME EN NASM : pas du tout facile [ par eishtein ]
bonjour tout le monde; je me demandais si vous pouvez m'aider à la résolution d'un certain problème au niveau suivant : en fait j'ai un prg en NASM [1
Saisie & Calcul de sa taille de caractère en tasm [ par baz13shaz ]
je veut saisir une chaine de caractère & calculer sa taille,et je veut charger la chaine saisie en mémoire centrale? que doit je faire? comment je peu
tasm [ par yosrasouaifi ]
DOSSEG ;Modele de segmentation DOS .MODEL SMALL ;Fixe le modele de segmentation :petit modele .STACK 100h .DATA mes
afficher la somme de 2 entiers superieur à 9 [ par Benh_m ]
Bonjour à tous ! Alors voila, j'ai un devoir en Assembleur à faire et j'ai un problème : je dois faire la somme de deux entiers, jusque la tout va bi
probleme de simulation de 8086 sur ISIS PROTEUS [ par AZERGUI2 ]
Bonjour, j'ai généré le .exe du programme suivant par le MAMSM32 ,mais la simulation ça marche pas au niveau de ISIS PROTEUS !!! il s'agit de tro
Livres en rapport
|
Derniers Blogs
[FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|