A voir également:
- Lecture adresse memoire en langage c++
- Darkino nouvelle adresse - Guide
- Adresse mac - Guide
- Changer adresse dns - Guide
- Mémoire vive - Guide
- Adresse url - Guide
4 réponses
Si j'ai bien compris vous voulais mettre la valeur 1 à l'adresse 0x03f8:
pour cela il suffit de faire :
ptraccess=0x03f8 //on initialise le pointeur à l'@ 0x03f8 (le pointeur pointe sur cette adresse)
Puis ensuite de mettre à cette adresse la valeur 1 :
*ptracess=1
Si la question esy bien celle là cad mettre une valeur à une adresse spécifique c'est ce code qu'il faut utiliser.
Bye!
pour cela il suffit de faire :
ptraccess=0x03f8 //on initialise le pointeur à l'@ 0x03f8 (le pointeur pointe sur cette adresse)
Puis ensuite de mettre à cette adresse la valeur 1 :
*ptracess=1
Si la question esy bien celle là cad mettre une valeur à une adresse spécifique c'est ce code qu'il faut utiliser.
Bye!
Je ne comprends pas bien la question. Mais je suppose que:
1 tu veux accéder à un mot de 32 bits ( registre) situé à l'adresse 03f8. et que dans cette adresse tu veux mettre la valeur 1.
2 Tu veux faire un saut de 5 fois le mot long (5+1)= le 6° registre.
et que tu veux le lire à l'écran.
Voici une petite routine qui doit faire ce que tu veux.
On utilise un pointeur sur un long ( 32 bits) et on l'initialise l'adresse à lire dans valeur. Ensuite, tu modifie le contenu du pointeur. Tu fais un saut et tu fais un printf.
#include <stdio.h>
#include <conio.h>
void main (void)
{
long*ptracces;
long valeur;
char chaine [81];
valeur = 0x03f8;
ptracces = &valeur;
*ptracces = 1;
ptracces = ptracces+ (5* sizeof(long));
valeur = *ptracces;
printf ("LA VALEUR DU 6° REGISTRE est : %x \n",valeur);
gets(chaine);
}
En espérant que ça va marcher .
Si tu as d'autres questions. Pas de problème. Je peux essayer de chercher avec toi.
A plus sur la toile :).
1 tu veux accéder à un mot de 32 bits ( registre) situé à l'adresse 03f8. et que dans cette adresse tu veux mettre la valeur 1.
2 Tu veux faire un saut de 5 fois le mot long (5+1)= le 6° registre.
et que tu veux le lire à l'écran.
Voici une petite routine qui doit faire ce que tu veux.
On utilise un pointeur sur un long ( 32 bits) et on l'initialise l'adresse à lire dans valeur. Ensuite, tu modifie le contenu du pointeur. Tu fais un saut et tu fais un printf.
#include <stdio.h>
#include <conio.h>
void main (void)
{
long*ptracces;
long valeur;
char chaine [81];
valeur = 0x03f8;
ptracces = &valeur;
*ptracces = 1;
ptracces = ptracces+ (5* sizeof(long));
valeur = *ptracces;
printf ("LA VALEUR DU 6° REGISTRE est : %x \n",valeur);
gets(chaine);
}
En espérant que ça va marcher .
Si tu as d'autres questions. Pas de problème. Je peux essayer de chercher avec toi.
A plus sur la toile :).
salut pascal, g une question (un doute???) sur ton code..
...
valeur = 0x03f8;
ptracces = &valeur; // La tu recupere l'adresse de l'entier valeur
// je vois pas le rapport avec le registre en question.
//comment sais tu que c'est bien la bonne adresse mémoire??
*ptracces = 1; // meme remarque
...
a ta place je ferai plutot
ptracces=valeur //(au lieu de &valeur)
qu'en penses-tu??
Castor
...
valeur = 0x03f8;
ptracces = &valeur; // La tu recupere l'adresse de l'entier valeur
// je vois pas le rapport avec le registre en question.
//comment sais tu que c'est bien la bonne adresse mémoire??
*ptracces = 1; // meme remarque
...
a ta place je ferai plutot
ptracces=valeur //(au lieu de &valeur)
qu'en penses-tu??
Castor
Bien vu . Il faut aussi caster le format car sinon ça ne passe pas bien. J'ai revérifié, je lis bien la bonne adresse mais quand j'effectue la modif de la valeur il y à une exception "access violation".
Aurais tu une idée??
Merci pour le tuyau.Je me remets au C et C++. La reprise est un peu difficile.
A+.
Aurais tu une idée??
Merci pour le tuyau.Je me remets au C et C++. La reprise est un peu difficile.
A+.
merci pour tes infos,je lis bien sur l'adresse mais je ne vois pas
évoluer la valeur quand j'active les entrées
je te passe l'exemple que j'ai ecrit en qb45 je voudrais l'écrire
en c++
rem début programme
ba=&h3f8
OUT ba+ 4,1
DO
etat6=&h3f8
if etat6=16 and c=0then c=1
if etat6=0 and c=1 then z=z+1:c=0
if z>3600 then aa=aa+1:print "tour codeur";aa : z=0
LOOP
Ce programme me permet de voir avec précision ,le top du codeur
le problème c'est que je manque de vitesse je suis tout juste a 2000 hertz
merci à bientôt J F G