Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1334 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme d'affichage de caracteres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme d'affichage de caracteres

n°1464171
carot0
Posté le 24-10-2006 à 15:43:27  profilanswer
 

slt tlm, j'ai une fonction pour afficher une caractere mais elle ne semble pas se comporter comme je le souhaite.

Code :
  1. void car(char caractere)
  2. {
  3. unsigned char* ptr=(unsigned char*)0xB8000;
  4. char temps;
  5. temps = caractere;
  6. if(temps=='\n')
  7. {
  8.  positionX=0;
  9.  positionY++;
  10. }
  11.  else{
  12.   ptr[positionX*2+positionY*160+1]=BLANC;
  13.   ptr[positionX*2+positionY*160]=temps;
  14.   positionX++;
  15.   if(positionX==80)
  16.   {
  17.    positionY++;
  18.    positionX=0;
  19.   }
  20.  }
  21.  if(positionY>=25)
  22.   scrollup();
  23. }


 
si je fais un car('t');
ca marche pas de probleme
par contre

Code :
  1. int i=0;
  2. char text[]="hello world";
  3. for (i=0;i!=11;i++)
  4. car(text[i]);


la ca plante... je comprends pas pourquoi...


---------------
In a world without walls and fences, who needs Windows and Gates
mood
Publicité
Posté le 24-10-2006 à 15:43:27  profilanswer
 

n°1464277
_darkalt3_
Proctopathe
Posté le 24-10-2006 à 16:35:12  profilanswer
 

carot0 a écrit :


par contre

Code :
  1. int i=0;
  2. char text[]="hello world";
  3. for (i=0;i!=11;i++)
  4. car(text[i]);


la ca plante... je comprends pas pourquoi...


 

Code :
  1. int i=0;
  2. char text[]="hello world";
  3. for (i=0;i<strlen(text);i++)
  4.    car(text[i]);


 
Le 0 finit une chaine de caractères en C.


---------------
Töp of the plöp
n°1464305
carot0
Posté le 24-10-2006 à 17:08:41  profilanswer
 

_darkalt3_ a écrit :

Code :
  1. int i=0;
  2. char text[]="hello world";
  3. for (i=0;i<strlen(text);i++)
  4.    car(text[i]);


 
Le 0 finit une chaine de caractères en C.


oui et ... dans text il y est bien!
meme si il etait pas le for devrait quand meme afficher "hello world" avec d'autre truc derriere


---------------
In a world without walls and fences, who needs Windows and Gates
n°1464309
_darkalt3_
Proctopathe
Posté le 24-10-2006 à 17:11:52  profilanswer
 

Ca plante comment dans ce cas ?


---------------
Töp of the plöp
n°1464313
carot0
Posté le 24-10-2006 à 17:19:54  profilanswer
 

_darkalt3_ a écrit :

Ca plante comment dans ce cas ?


ca fige et je commence a trouver des idées de reponse :  

Code :
  1. if(positionX==80)
  2.             {
  3. positionX=0;
  4.                 positionY++;}


cette condition pose probleme, le texte ne s'affiche pas quand elle est activé ( un caractere ca passe pas mais pas plusieurs....)
si j'enleve le positionX=0; tout marche bien ( mais je dois le mettre a 0 ! )


Message édité par carot0 le 24-10-2006 à 17:23:25

---------------
In a world without walls and fences, who needs Windows and Gates
n°1464371
Emmanuel D​elahaye
C is a sharp tool
Posté le 24-10-2006 à 19:07:00  profilanswer
 

carot0 a écrit :

Code :
  1. void car(char caractere)
  2. {
  3. unsigned char* ptr=(unsigned char*)0xB8000;




Y'avait longtemp que je n'avais pas vu ce genre de code... Tu es sous DOS ?

Message cité 1 fois
Message édité par Emmanuel Delahaye le 24-10-2006 à 19:07:34

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1464426
carot0
Posté le 24-10-2006 à 22:01:25  profilanswer
 

Emmanuel Delahaye a écrit :

Y'avait longtemp que je n'avais pas vu ce genre de code... Tu es sous DOS ?


encore mieux : je code mon propre kernel ( le mot est fort mais decrit bien la situation  :sol: )


---------------
In a world without walls and fences, who needs Windows and Gates
n°1464455
Emmanuel D​elahaye
C is a sharp tool
Posté le 24-10-2006 à 23:04:34  profilanswer
 

carot0 a écrit :

encore mieux : je code mon propre kernel ( le mot est fort mais decrit bien la situation  :sol: )


OK. Tu es donc en mode réel, c'est ça ? Les adresses physiques et logiques sont les mêmes, pas de MMU. On est d'accord ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1464543
carot0
Posté le 25-10-2006 à 09:17:28  profilanswer
 

Emmanuel Delahaye a écrit :

OK. Tu es donc en mode réel, c'est ça ? Les adresses physiques et logiques sont les mêmes, pas de MMU. On est d'accord ?


je suis passé en mode protégé, j'ai une gdt pour avoir des adresses logique ( et plus un segment et un offset )
les adresse logique et physique ne doivent pas etre les meme car je n'ai pas mis en place la pagination
je ne doit pas avoir de MMU ( vu que j'ai rien codé a ce sujet la ).


---------------
In a world without walls and fences, who needs Windows and Gates
n°1464626
Emmanuel D​elahaye
C is a sharp tool
Posté le 25-10-2006 à 10:52:45  profilanswer
 

carot0 a écrit :

je suis passé en mode protégé, j'ai une gdt pour avoir des adresses logique ( et plus un segment et un offset )
les adresse logique et physique ne doivent pas etre les meme car je n'ai pas mis en place la pagination
je ne doit pas avoir de MMU ( vu que j'ai rien codé a ce sujet la ).


Et en mode protégé, un pointeur initialisé en dur comme

Code :
  1. unsigned char* ptr=(unsigned char*)0xB8000;


ça a un sens ?
 
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 25-10-2006 à 10:52:45  profilanswer
 

n°1464646
carot0
Posté le 25-10-2006 à 11:25:39  profilanswer
 

Emmanuel Delahaye a écrit :

Et en mode protégé, un pointeur initialisé en dur comme

Code :
  1. unsigned char* ptr=(unsigned char*)0xB8000;


ça a un sens ?


oui c'est l'adresse de la mémoire video pour le mode console 80x25.


---------------
In a world without walls and fences, who needs Windows and Gates
n°1464699
Emmanuel D​elahaye
C is a sharp tool
Posté le 25-10-2006 à 13:07:58  profilanswer
 

carot0 a écrit :

oui c'est l'adresse de la mémoire video pour le mode console 80x25.


Oui, on sait bien, en mode réel. Mais en mode protégé ? Ca correspond à la même adresse physique ? Y'a pas une histoire de GDT justement ?
 
Et quid du mode noyau ou utilisateur. Tu autorises un utilisateur à bricoler dans la mémoire video ? C'est pas plutôt des drivers en mode noyau qui font ça ?
 
Est-ce qu'il ne faut pas écrire une fonction système utilisable uniquement en mode noyau, et qui retournerait l'adresse logique d'une adresse physique (il y a un truc comme ça sous Linux), genre :

Code :
  1. void *k_logical_address (unsigned long physical_address);
  2. char *p_video = k_logical_address (0xB000);


Je me pose des questions, c'est tout. Comme tu es en train d'écrire un noyau d'OS, ça peut avoir son importance...

Message cité 1 fois
Message édité par Emmanuel Delahaye le 25-10-2006 à 14:17:35

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1464742
carot0
Posté le 25-10-2006 à 13:54:45  profilanswer
 

Emmanuel Delahaye a écrit :

Oui, on sait bien, en mode réel. Mais en mode protégé ? Ca correspond à la même adresse physique ? Y'a pas une histoire de GDT justement ?
 
Et quid du mode noyau ou utilisateur. Tu autorises un utilisateur à bricoler dans la mémoire video ? C'est pas plutôt des drivers en mode noyau qui font ça ?
 
Est-ce qu'il ne faut pas écrire une fonction système utilisable uniquement en mode noyau, et qui retournerait l'adresse logique d'une adresse physique (il y a un truc comme ça sous Linux), genre :

Code :
  1. void *k_logical_address (unsigned long physical_address);
  2. char *p_video = get_logical_address (0xB000);


Je me pose des questions, c'est tout. Comme tu es en train d'écrire un noyau d'OS, ça peut avoir son importance...


 
la j'en suis justement au drivers de la console. en mode protégé cest bien cette adresse la.
une gdt est bien presente pour transformer les segment + offset en adresse logique ( pour les adresse physique ca doit etre lier a la pagination dont je ne me suis pas encore occupé! )


---------------
In a world without walls and fences, who needs Windows and Gates

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme d'affichage de caracteres

 

Sujets relatifs
Problème activexProbleme de cookies
[Résolu][XHTML/Javascript/W3C] Problème de XHTML dans un Javascript[HTML/CSS/Javascript] Probleme background avec les lignes d'un tableau
Problème de création de processusProbleme de débutant...
MySQL : Problème de liste récursiveprobleme affichage avec caracteres speciaux ( ' " ...)
[JAVA] probleme d'affichage caracteres spéciauxProblème affichage caractères spéciaux
Plus de sujets relatifs à : probleme d'affichage de caracteres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR