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

Programmation d'OS Assembleur Discussion :

Adresse mémoire video


Sujet :

Programmation d'OS Assembleur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut Adresse mémoire video
    Bonjour tout le monde, comme la plupart des gens qui poste sur ce forum je suis en train de programmer un OS.

    Pour l'instant je suis ce tuto.

    Actuellement je voudrais afficher un message en couleur, le tuto indique de modifier directement les octets en mémoire vidéo.

    Le problème c'est que le tuto me dit
    La mémoire vidéo est mappée en mémoire à l'adresse physique 0xB8000.
    Je modifie donc les octets comme indiqué mais il ne se passe rien.

    Je pense que le problème viens du fait que je suis encore en mode reel et que l'adresse mémoire n'est pas la même.

    Je voudrait donc connaitre l'adresse physique de la mémoire vidéo en mode reel.

  2. #2
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Ça fait longtemps que je n'ai plus fait d'ASM 16 bits mais à mon avis il faut initialiser un segment à 0xB800 puis adresser la mémoire de la carte graphique en passant par ce segment-là.

    [Edit]

    Si ça peut t'aider j'avais adapté une petite demo : http://pastie.org/131935
    C'est dans le même style mais ça n'utilise pas la même adresse et c'est pour FASM.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut
    Merci de ta réponse, le problème c'est que je débute en ASM, si t'as le temps est ce que tu peux m'expliquer comment faire STP.

    Si t'as pas le temps laisse tomber, je me débrouillerai.

  4. #4
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Lis ça : http://benoit-m.developpez.com/assem.../Partie1-2.php
    Et n'oublie pas que ça sert seulement pour l'assembleur 16 bits.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut
    Merci je vais voir ca .

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Par défaut
    Bonsoir,

    c'est vrai que je n'ai pas précisé les différences entre adressage en mode réel et adressage en mode protégé ... Le tuto proposé par Dapounet est complet et clair : je te le recommande moi aussi vivement

    Essaye de le lire et revient vers nous si ça n'est toujours pas clair après ça.
    Bon courage,

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut
    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
    [BITS 16]
    [ORG 0x0]
     
    jmp start
     
    %include "UTIL.INC"
     
    start:
    ; 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
     
    ; affiche un msg
        mov si, msg00
        call afficher
     
     
    mov ax, 0xB800
    mov es, ax 
    mov di, 0000
    mov al, 65
    mov ah,  07
    mov [es:di], al
     
     
    mov byte [0xB800], 'K'
    mov byte [0xB801], '0x0A'
    mov byte [0xB802], 'R'
    mov byte [0xB803], '0x0A'
    mov byte [0xB804], 'U'
    mov byte [0xB805], '0x0A'
    mov byte [0xB806], 'X'
    mov byte [0xB807], '0x0A'
     
     
     
    end:
        jmp end
     
     
    msg00 db  'Vous venez de demarer AKruX     v0.0.0.3 !', 10, 0

  8. #8
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Quand NASM voit les guillemets il essaie de remplacer les caractères qui apparaissent par leur code ASCII. Donc avec '0x0A', il essaie de mettre le code du 0, celui du x, celui du 0 puis celui du A. C'est trop grand pour un octet, donc il t'avertit. Si tu mets 0x0A à la place ça donnera sûrement ce que tu veux.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut
    J'arrive a compiler mais quand je "boot" avec qemu, pas de caracteres en couleur...

    juste le message du debut. "Vous venez de demarer AKruX 0.0.0.3!"

    Qu'est ce que je fais pas bien ?

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 145
    Par défaut
    C'est possible de voir le code source ?

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Par défaut
    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
    [BITS 16]
    [ORG 0x0]
     
    jmp start
     
    %include "UTIL.INC"
     
    start:
    ; 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
     
    ; affiche un msg
        mov si, msg00
        call afficher
     
     
    mov ax, 0xB800
    mov es, ax 
    mov di, 0000
    mov al, 65
    mov ah,  07
    mov [es:di], al
     
     
    mov byte [0xB800], 'K'
    mov byte [0xB801], 0x0A
    mov byte [0xB802], 'R'
    mov byte [0xB803], 0x0A
    mov byte [0xB804], 'U'
    mov byte [0xB805], 0x0A
    mov byte [0xB806], 'X'
    mov byte [0xB807], 0x0A
     
     
     
    end:
        jmp end
     
     
    msg00 db  'Vous venez de demarer AKruX     v0.0.0.3 !', 10, 0

Discussions similaires

  1. Adresse mémoire partagée
    Par dave.vuistiner dans le forum Assembleur
    Réponses: 4
    Dernier message: 10/08/2006, 19h45
  2. Réponses: 16
    Dernier message: 30/05/2006, 18h46
  3. lire la valeur d'une adresse mémoire
    Par ilimo dans le forum Windows
    Réponses: 17
    Dernier message: 11/04/2006, 15h21
  4. PRoblème d'adresse mémoire
    Par pmboutteau dans le forum Access
    Réponses: 11
    Dernier message: 07/04/2006, 11h00
  5. Réponses: 6
    Dernier message: 19/09/2005, 19h48

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