begin process at 2012 05 25 12:16:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Aide a la programmation Windows

 > 

Problème lecture adresse mémoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème lecture adresse mémoire

lundi 20 juin 2005 à 15:06:41 | Problème lecture adresse mémoire

xmaz57000

Voilà je viens de recevoir un ordinateur industriel qui dispose en standard de 8 entrées TOR.

Malheureusement, il n'y a aucun driver qui permet de récupérer l'état des entrées mais uniquement une adresse mémoire.

J'utilise comme logiciel de développement, WINDEV 8.0 et la seul fonction qui était suceptible de faire ca ne marche pas.

Existe t'il une fonction dans les API de Windows qui permettrait de lire cette adresse ?

L'adresse est fixe et est : #803H

Merci d'avance
lundi 20 juin 2005 à 15:20:18 | Re : Problème lecture adresse mémoire

BruNews

Administrateur CodeS-SourceS
si 803h est bien dans l'espace mémoire de TON processus:
mov edx, 803h
mov eax, [edx]

sinon ReadProcessMemory()

ciao...
BruNews, MVP VC++
lundi 20 juin 2005 à 16:03:37 | Re : Problème lecture adresse mémoire

Nasman

Brunews, peut-on utiliser les instructions suivantes ?

mov dx,803h
in eax,dx

Sinon pourquoi

Un Newbie souhaitant progresser



lundi 20 juin 2005 à 16:16:53 | Re : Problème lecture adresse mémoire

BruNews

Administrateur CodeS-SourceS
Ne pas employer 'IN' sous Windows (généralement en mode protégé), il faut utiliser l'API pour accéder au matériel sinon tu auras une exception.

ciao...
BruNews, MVP VC++
lundi 20 juin 2005 à 16:52:45 | Re : Problème lecture adresse mémoire

xmaz57000

comment vous faites pour intégrer ce code dans Windev ???? C po faisable je crois.

mov edx, 803h
mov eax, [edx]

lundi 20 juin 2005 à 17:11:49 | Re : Problème lecture adresse mémoire

BruNews

Administrateur CodeS-SourceS
C'est syntaxe Intel standard qui s'emploie sur MS VC++ (que j'utilise) et aussi sur Borland.
Aucune idée du sabir utilisé par Windev, peut-être AT&T ?

ciao...
BruNews, MVP VC++
mardi 21 juin 2005 à 10:58:30 | Re : Problème lecture adresse mémoire

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

je pense que tu devrais pouvoir utiliser l'instruction in si ton port a son iopl a 3.
la manière de le passer l'iopl a la valeur voulue ?

sinon, pour windev, je pense que le mieux est de passer par une dll.
l'appel de dll ne pose pas de probleme sous windev.

tu peux meme directement creer ta dll en asm avec masm et l'utiliser dans windev sans problèmes.

@++

mardi 21 juin 2005 à 11:08:53 | Re : Problème lecture adresse mémoire

xmaz57000

Je ne suis pas assez callé pour faire mon driver ^^.

Pas que je ne veux po mais je ne c po du tout comment faire et le temps me manque pour me plonger dedans.
Y a po qqun de motivé pour faire ça vite fait ?

Ce qui me pose prob c comment récup la valeur en passant par la DLL

mov edx, 803h
mov eax, [edx]

G vite fait compri ce que ca fesait mais comment dans la DLL mettre le résultat eax dans une variable ?
mardi 21 juin 2005 à 12:05:58 | Re : Problème lecture adresse mémoire

patatalo

Membre Club Administrateur CodeS-SourceS

re,

dans windev, tu auras simplement:
mavar = AppelDll("madll","ReadIOMapPortORDII",0803h)

les fonctions de ta dll:
ReadIOMapPortORDII PROC portID:DWORD
mov edx,portID
mov eax,[edx]
ret
ENDP

ReadIOPortORDII PROC portID:DWORD
mov edx,portID
in eax,dx
ret
ENDP

le passage eax -> mavar est automatique vu que eax est forcement la valeur de retour dans l'API win32.

@++

mardi 21 juin 2005 à 14:18:37 | Re : Problème lecture adresse mémoire

xmaz57000

Bon encore une question comme je connais po Masm g un doute.

G copié collé ton code et g fait create DLL
Voila ce qu'il ma sortie

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

.486 ; create 32 bit code

.model flat, stdcall ; 32 bit memory model

option casemap :none ; case sensitive

; include files

; ~~~~~~~~~~~~~

include \masm32\include\windows.inc

include \masm32\include\masm32.inc

include \masm32\include\gdi32.inc

include \masm32\include\user32.inc

include \masm32\include\kernel32.inc

include \masm32\include\Comctl32.inc

include \masm32\include\comdlg32.inc

include \masm32\include\shell32.inc

include \masm32\include\oleaut32.inc

include \masm32\include\dialogs.inc

include \masm32\macros\macros.asm ; the macro file

; libraries

; ~~~~~~~~~

includelib \masm32\lib\masm32.lib

includelib \masm32\lib\gdi32.lib

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

includelib \masm32\lib\Comctl32.lib

includelib \masm32\lib\comdlg32.lib

includelib \masm32\lib\shell32.lib

includelib \masm32\lib\oleaut32.lib

; ----------------------------------------

; prototypes for local procedures go here

; ----------------------------------------

.data?

hInstance dd ?

.code

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

LibMain proc instance:DWORD,reason:DWORD,unused:DWORD

.if reason == DLL_PROCESS_ATTACH

push instance

pop hInstance

mov eax, TRUE

.elseif reason == DLL_PROCESS_DETACH

.elseif reason == DLL_THREAD_ATTACH

.elseif reason == DLL_THREAD_DETACH

.endif

ret

LibMain endp

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

comment * -----------------------------------------------------

You should add the procedures your DLL requires AFTER

the LibMain procedure. For each procedure that you

wish to EXPORT you must place its name in the "testdll.def"

file so that the linker will know which procedures to

put in the EXPORT table in the DLL. Use the following

syntax AFTER the LIBRARY name on the 1st line.

LIBRARY testdll

EXPORTS YourProcName

EXPORTS AnotherProcName

------------------------------------------------------- *

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

end LibMain


Je ne retrouve à aucun endroit le code que g collé. Est ce que c normal ?

Ensuite il me demande de lancer MAKEIT.bat et la je vois bien apparaitre ma DLL mais impossible de l'ouvrir pour voir si c bon. G que des caractères illisibles.
Me serais je trompé qqpart ?

Encore merci PATALO et les autres


1 2

Cette discussion est classée dans : problème, lecture, entrées, adresse, mémoire


Répondre à ce message

Sujets en rapport avec ce message

Adresse mémoire d'une chaine [ par moffer ] Bonjour,Je veux pointer sur le premier caractère de ma chaine. Lorsque je compile le code suivant :SEGMENT DATAchaine db 'Hello$'SEGMENT TEX Problème d'adresse effective [ par Ihlianov ] Hi,J'ai un problème avec NASM, qui me rend cinglé.Je code un .Com (16 bits) et il me revoit une erreur sur l'instruction suivante : mov ax, [d Allouement de la mémoire et protection [ par bilaloch ] Bonjour à tous,J'aimerais connaître s'il y a un moyen de savoir si telle adresse de la mémoire vive est protegée, si telle adresse est vide et égaleme Problème pour démarrer (EXAM) :( [ par xHousseMx ] Bonjour, J'ai un problème pour démarrer et faire l'exo ! L'objectif de l'exercice consiste a multiplié 2 mots de 4 bits. X1 se trouve dans l'adres charger un noyau sur une disquette [ par walamaru ] salut; voila mon problem, quand j'essai de loader un kernel depuis un loadkernel, rien ne se passe, alors je me suis dit que l'erreur peut etre dans l assembleur [ par lamine135 ] salut , mon problème s'agit que j'ai 2 entrées et 2 sorties la première entrée active la première sortie durant 30 secondes mais si la deuxième entrée [Débutant] Problème difficile, merci d'y jeter u coup d'oeil ;) [ par lil_meh10 ] j'essai d'ecrire un programme en langage assembleur permettant de détecter la position du premier bit à '1' d'un mot de 32 bits (status) en balayant d bus d'adresse [ par lp2012 ] bonjour jai un petite question : quel est le nombre de mots adressable et la adresse haute d'une memoire possede 32 bits.puis quel est le nombre d adresse de base d'un segment [ par gblade ] voila si qqun pouvait me dire comment on fait pour définit l'adresse de base d'un segment. j'ai vu dans certaines docs ils mettent une equate au début


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,184 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales