IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Je voudrais afficher un texte lors du boot sur ma disquette


Sujet :

Assembleur

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 46
    Points
    46
    Par défaut je voudrai afficher un texte lors du boot sur ma disquette
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    [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

  2. #2
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    J'ai déjà répondu à quelque chose du genre dans un post un peu plus bas et je donne même un procédure complète...
    En fait, ma proc est à la troisième page, mais il vaut mieux que tu lise tout le thread car plein de truc importants sont expliqués (mémoire vidéo...).

    http://www.developpez.net/forums/vie...e361ea7babff85
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 46
    Points
    46
    Par défaut
    au fait je suis allé lire le post mais il ne traite pas trop mon cas. En plus j'utilise NASM.
    Dans mon code (si vous l'avez vu), je veux juste afficher un texte. Le probleme c'est que le texte ne s'affiche pas, mais mon entrée en mode graphique 320x200x256 fonctionne.

    Au fait, pour ne pas trop vous enbeter vous n'aurez pas un petit code en NASM tres tres simple qui m'afficherait juste un message comme " j'ai enfin reussi mon boot ,OUFF" , pour mon boot?
    en passant je signal que j'utilise bochs qui fonctionne pas sur mon win98 ou win 2000 server. du coup demarrage redemarrage avec ma disquette et le cycle recommence.

    PS: dans mon programme j'ai inserrer un code qui charge en meme temps sur le secteur 1 de la disquette. Si vous n'avez pas vu le code je vous l'envoie.

  4. #4
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    C'est pas compliqué : si tu veux afficher du texte, il faut passer en mode texte

    Le mode 13h est un mode graphique, ce qui veut dire que tu gère chaque pixel de l'écran, donc, il faut que tu fasse des fonctions pour afficher les caractère à tel endroit, avec telle police...

    Pour faire plus simple, utilises le mode texte (03h), dont la mémoire (on parle ici de mémoire vidéo, ou mémoire texte) débute à l'adresse 0B800h (adresse de segment, donc l'adressse phydsique est 0B8000h).

    Utiliser le BIOS pour afficher des caractères les uns après les autres est fastidieux, et de plus c'est impossible en mode protégé, c'est pourquoi il convient d'accèder directement à la mémoire vidéo...

    C'est-à-dire que les caractères affichés sont stockés les uns après les autres à partir de cette adresse.
    Les caractères sont stockés sur deux octets :
    -1e : Code ASCII du caractère
    -2e : Attributs du caractère

    Les attributs représentent la couleur du fond et la couleur du caractère :
    Les 4 bits de poids faible sont la couleur du caractère, et les quatres autres la couleur du fond.

    Puisqu'on a 4 bits pour une couleur, ça fait un mode 16 couleurs.
    Le mode texte 03h a une résolution de 80*25 caractères, chaque mot à partir du début de la mémoire texte est un carctère de ce tableau.

    Ainsi, si tu veux écrire un 'P' gris sur fond noir à la première case en haut à gauche (coordonnées 0;0) tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mov    ax, 0B800h
    mov    es, ax
    mov    byte [es:0], 'P'
    mov    byte [es:1], 07h ;Couleur du caractère
    Si tu veux l'afficher à la deuxième colonne de la troisième ligne (2;3), tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mov    ax, 0B800h
    mov    es, ax
    mov    [es:((3*80)+2)], 'P'
    mov    [es:((3*80)+3)], 07h
    Mais je ne vais pas tout réexpliquer, je l'ai déjà fait dans l'autre post !
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Comme le précise à très juste titre Nico*3-3 le mode VGA c'est un mode GRAPHIQUE.
    D'ailleurs est-ce que quelqu'un a vu un OS démarrer dans un mode graphique ??
    Un OS démarre tjs en mode texte

    Utiliser le BIOS pour afficher des caractères les uns après les autres est fastidieux, et de plus c'est impossible en mode protégé, c'est pourquoi il convient d'accèder directement à la mémoire vidéo...
    Oui mais il développe son propre OS et , il me semble , sauf avis contraire , qu'un PC au niveau du BIOS , pendant le POST , démarre en mode REEL ; le mode protégé n'est utilisé pendant le POST que pour lire toute la mémoire phyisque.
    Je crois que c'est à l'OS de basculer en mode protégé ( si je dis des aneries vous m'arrétez ) et gérer le multitâche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    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
    Pas très "style" tout ça
    Mieux vaut stocker cela dans une sorte de table non ?

  6. #6
    Membre habitué Avatar de Nico*3-3
    Inscrit en
    Octobre 2004
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 164
    Points : 145
    Points
    145
    Par défaut
    Je parlais du mode protégé pour le futur, un OS qui ne passe pas en mode protégé c'est un peu du gâchis de nos jours...
    Mais pour confirmation, après le POST, le BIOS est éxecuté (qui identifie et initialise le matériel et les Ints), puis il charge le premier secteur du disque qui est le MBR et qui fait donc 512 octets, il le vérifie puis il lui passe la main en mode réel, c'est donc bien sûr au MBR ou au Kernel de passer en mode protégé...

    ADABLA Va voir dans le post du développement du Secteur de Boot de SKAN où je donne une proc utile et facile à utiliser exactement pour faire ce que tu veux faire : faite pour un secteur de boot (74 octets) et en plus très commentée, donc je ne vois pas vraiment pourquoi tu cherches encore à t'embêter en affichant les caractères un par un.

    Avec ma proc, tu fais ta chaîne comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chaine    db    "Bonjour !", '$'
    Elle doit se terminer par un '$' (tu peux le changer dans la proc bien sûr... ).
    Et tu n'as plus qu'à appeler ma procédure et ça l'affiche !
    Tout a une fin, sauf l'infini...
    Projet SKAN : Développement commun d'OS

    Nico*3-3

  7. #7
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 46
    Points
    46
    Par défaut
    merci beaucoup pour toutes vos suggestions. Franchement elles m'ont aidé. et j'ai trouvé la solution. En fait je garde le mode texte comme vous l'avez si bien dit. Puis je separe mon code boot du code qui le charge sur la disquette. Et le resultat est cool.

    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.
    je vous remercie infiniment

    au fait comment on envoie les sources zippées ?

  8. #8
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 46
    Points
    46
    Par défaut [resolu]
    j'ai reussi a afficher des textes lors du chargement de mon MBR.
    J'ai cree mon chargeur BOOT et je ne charge plus dans le memee fichier que mon boot; ce qui etait mon erreur!
    solution: separé le chargeur du fichier boot.
    il existe meme d'autre chargeur comme partcopy disponible sur le net. (zut ! j'ai oublie le site)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher du texte lors du survole d'un bouton
    Par Patmat44 dans le forum C#
    Réponses: 10
    Dernier message: 13/06/2012, 11h44
  2. [ZF 1.11] affiche de text lors de changement la liste déroulante
    Par Invité dans le forum Zend Framework
    Réponses: 2
    Dernier message: 20/06/2011, 01h50
  3. si checkbox cochée afficher une alerte lors du clic sur OK
    Par Nemesys dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/04/2007, 14h10
  4. Afficher une image lors du boot
    Par log2n dans le forum Programmation d'OS
    Réponses: 8
    Dernier message: 25/10/2005, 20h24
  5. Changer la couleur du texte lors passage souris sur un TD !
    Par Kokito dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/01/2005, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo