A voir également:
- Lecture adresse memoire en langage c++
- Darkino nouvelle adresse - Guide
- Rechercher ou entrer l'adresse - Guide
- Adresse mac - Guide
- Darkino : le grand site pirate change d'adresse et d'interface - Accueil - Services en ligne
- Changer adresse dns - Guide
4 réponses
weblook
Messages postés
78
Date d'inscription
lundi 25 juin 2001
Statut
Membre
Dernière intervention
18 décembre 2004
7
5 sept. 2001 à 00:48
5 sept. 2001 à 00:48
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!
pascal.libert
Messages postés
9
Date d'inscription
samedi 25 août 2001
Statut
Membre
Dernière intervention
15 octobre 2001
3
1 sept. 2001 à 12:10
1 sept. 2001 à 12:10
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 :).
Utilisateur anonyme
3 sept. 2001 à 13:08
3 sept. 2001 à 13:08
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
pascal.libert
Messages postés
9
Date d'inscription
samedi 25 août 2001
Statut
Membre
Dernière intervention
15 octobre 2001
3
4 sept. 2001 à 23:37
4 sept. 2001 à 23:37
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+.
Utilisateur anonyme
>
pascal.libert
Messages postés
9
Date d'inscription
samedi 25 août 2001
Statut
Membre
Dernière intervention
15 octobre 2001
5 sept. 2001 à 13:34
5 sept. 2001 à 13:34
Euh... access violation ca signifie en général que tu as pas le droit d'ecrire.. donc le registre apres décalage, ptet qu'il est réservé, non? A vérifier...
Castor
Castor
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