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 :

Mémoire vidéo (texte) [FAQ]


Sujet :

Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Mémoire vidéo (texte)
    Salut tous le monde,

    J'ai lu tous les sujet et tutoriaux concernant l'ecriture dans la memoire video (texte) et y a quelque chose que j'aimerais bien comprendre.

    Faut il etre en pmode pour ecrire en 0B000h car je n'ai jamais reussi à le faire sous windows et sous linux j'ai un segmentation fault (pb d'adressage en mode reel????).

    Aparement c un pb qui revient souvent sur le forum, et c peut etre pour ca que les gens n'y arrivent pas, il faut etre en mode protege ou alors je raconte n' importquoi.

    Par contre j'arrive a allumer un pixel en vesa a l'adresse 0A000, aparament ca passe en mode reel. Mais bon c peut etre du au 64kb des fenetres (bank switching).Enfin bon j'aimerais bien comprendre le principe d'adressa ge en mode reel (1mo) ca veut dire que l on peut adresser jusqu'ou..

    Merci
    Merci

  2. #2
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    Salut!

    Tu as raison, l'écriture dans la mémoire vidéo revient souvent, pourtant c'est pas bien compliqué

    Cette zone de la mémoire est utilisable en mode réel, ça c'est sur
    Par contre, je ne sais pas si elle l'est en mode protégé, je crois pas (d'après qq infos piochées à droite à gauche ...)

    Si tu n'arrive pas à l'utiliser sous linux ou windows, c'est normal , se sont des systèmes sur lequels les programmes n'ont pas tous les droits.

    Si tu souhaites t'en servir sous windows, tu peut creer un executable DOS, windows te l'executera dans une fenetre DOS correctement (enfin, je dis ça pour win 9x, XP et autre je n'en sais rien !)

    Le mode protégé étant encore obscure pour moi, je ne vais pas m'étendre, mais en rmode, c'est super facile

    Enfin bon j'aimerais bien comprendre le principe d'adressage en mode reel (1mo) ca veut dire que l on peut adresser jusqu'ou..
    En rmode, tu as des segments de 65ko que tu selectionnes avec un numéro de segment sur 16 bit. Mais ils se superposent tous les 16 octets, donc c'est comme si tu avais des segments de 16 octets, sauf que pour faciliter les choses, tu as le droit de déborder sur ceux qui suivent ... Pour adresser 16 octets il te faut 4 bits. Si tu as tout suivis, tu te rend compte qu'en réalité il ne te reste que 16+4=20 bits pour adresser ta mémoire, 2^20 = 1Mo.
    Tout ça est beaucoup mieux éxpliqué dans des tutoriels

    sdx

    ps: en relisant ton post, je suis pris d'un doute alors RAPEL: Windows ou Linux -> Mode protégé, DOS -> Mode réel !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    merci de ta reponse

    Ce qui est sur aparment sur c que c bien utilisable en rmode.

    Par contre ca ne marche pas sous une fenertre dos sous win xp.

    Tu dis que c pas possible en pmode mais je ne comprend pas pourquoi.
    Il faudrait que j'essaye sur une disquette de boot...

    merci

  4. #4
    sdx
    sdx est déconnecté
    Membre régulier Avatar de sdx
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 90
    Points
    90
    Par défaut
    Par contre ca ne marche pas sous une fenertre dos sous win xp
    j'ai ça qui marche parfaitement sous win Me :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mov ah, 0
    mov al, 3h
    int 10h
     
    mov ax, 0b800h
    mov es, ax
     
    mov [es:0], word 'AA'
     
    mov ah, 0
    int 16h
     
    ret
    Tu dis que c pas possible en pmode
    Ah non : j'ai dis que je ne pensais pas, mais je n'affirme rien ...

    Il faudrait que j'essaye sur une disquette de boot...
    Sur le coup, je suis catégorique : ça fonctionne parfaitement

    sdx

    ps: cette question devrait faire partie de la FAQ, non ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    C'est clair que c'est un sujet recurent.

    Au fait j'ai essayé ton code et ca marche sous win xp. En fait il faut se mettre mode texte, c'etait mon erreur je pensais que par defaut le mode 3h etait activé et bien non.
    Et bien je suis content un mystere de plus resolu.

    Sinon pour info j'ai essayé en pmode ca marche si on l'active mais quand j'initialise la gdt ca ne marche plus et comme moi non plus je ne m'y connais pas trop.....

    enfin voila merci a toi

  6. #6
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    A ben voilà une réponse (certe indirecte) à mon topic Moi aussi j'ai toujours un segmentation fault donc c'est bon a savoir que c'est normal lol
    Bon reste à essayer au boot..

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Cette zone de la mémoire est utilisable en mode réel, ça c'est sur Very Happy
    Par contre, je ne sais pas si elle l'est en mode protégé, je crois pas (d'après qq infos piochées à droite à gauche ...)
    Il est parfaitement possible d'adresser la mémoire vidéo à l'adresse A000:000 en mode protégé.
    J'avais développé mes propres routines persos avec Watcom + Dos Extender Dos4Gw pour un petit jeu que j'avais diffusé.
    Le pb c'était en C avec des interruptions en ASM pour le VESA et bank switching

    Mais en assembleur pur c'est faisable il suffit d'adresser A00000000 ( vérifier les 0 ) bref un pointeur en mode "flat"

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Qu'est ce que le bank switching SVP ????

  9. #9
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Salut,

    Le bank switching est une limitation des acces a la memoire video.
    En fait la memoire video est decoupée en plusieurs bank, dont la taille peut varier (4Ko>>64Ko), du coup pour les hautes resolutions qui necessitent beaucoup de memoire il faut plusieurs bank pour remplir tout l'ecran, un programme faisant cela doit savoir dans quel bank il faut ecrire en fonction des coordonnees (x,y) de ton pixel.

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup

  11. #11
    mat.M
    Invité(e)
    Par défaut
    Yes comme le décrit ChevaliersDelaTableRonde c'est une zone de l'écran
    La fonction AL=05h du VESA permet cela .
    Une fenêtre VESA comporte 640000 pixels en 640*480*256 couleurs (8bits)
    Donc en 640*480 il faut 5 fenêtres

    Le VESA 2.0 en principe permet un adressage linéaire

    Citation Envoyé par Alcatîz
    Le mode 640x480x256 correspond au mode VESA 101h, que tu peux activer à l'aide de la fonction 4F02h de l'interruption 10h.
    Pour le déplacement de la fenêtre c'est 4F05h

    Attention le VESA est un mode d'affichage lent.
    Il faut un tampon d'affichage principal et un autre tampon de sauvegarde.
    Difficile à gérer en mode réel sauf avec XMS -EMS
    Le mieux vraiment est de gérer ça en PMODE

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Tu peux revenir la dessus
    -->640*4801 donc il faut 5 fenetre
    Je ne comprends pas ton calcul.

  13. #13
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Et bien pour un ecran en 640x480 256 couleurs il faut 307200 octets.
    Un bank peut avoir une taille maximale de 64Ko (65536 octets)
    donc 307200/65536 = 4.6875 = 5

    Il te faudra donc 5 bank pour remplir un ecran en 640x480, une partie du dernier bank ne sera pas utilise.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Il y a un truc que je ne comprends pas.
    *Quand on parle de bank switching on parle de 2 fenetre alors comment peut il y en avoir 5(bank)

  15. #15
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Non un bank != fenetre, une fenetre se compose de plusieurs banks, le bank switching permet juste d'ecrire au bon endroit de l'ecran.

    Petit rappel bank=64Ko=taille segment pour les proc intel.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    merci c'est plus clair maintenant.
    Et qu' en on est en lfb(line frame buffering) en mode protegé, il'y a plus de banks mais bien q'une seule fenetre?

  17. #17
    Membre régulier
    Inscrit en
    Janvier 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 84
    Points : 78
    Points
    78
    Par défaut
    Exactement, mais attention a bien recuperer l'adresse ou commence le LFB.

  18. #18
    mat.M
    Invité(e)
    Par défaut
    Oui KnightOfTheRound a raison je parlais de fenêtre
    Il faut déplacer la "fenêtre" active pour remplir l'écran

Discussions similaires

  1. Comment accéder à la mémoire vidéo ?
    Par Jérôme.O[76] dans le forum PureBasic
    Réponses: 16
    Dernier message: 16/03/2008, 13h54
  2. mémoire vidéo utilisée
    Par zenux dans le forum OpenGL
    Réponses: 2
    Dernier message: 09/10/2007, 13h50
  3. Etat de la mémoire vidéo
    Par titoine1978 dans le forum DirectX
    Réponses: 4
    Dernier message: 06/11/2006, 13h21
  4. Taille totale de la mémoire vidéo
    Par nicolas66 dans le forum Windows
    Réponses: 13
    Dernier message: 26/07/2006, 16h33
  5. Vitesse de la mémoire vidéo
    Par Anonymous dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 06/06/2002, 20h20

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