Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
truffo
Inscrit le: 31 Oct 2005 Messages: 120
|
Posté le: 08 Juin 2007 à 18:40 Sujet du message: Problème d'assembleur... |
|
|
Bonjour !
Soit le code suivant, qui marche parfaitement bien sous emu8086 :
Code: |
;initialisation
mov si, 0
mov cx, 4
mov di, 4
boucle:
mov si, circuit[di]
mov ax, entrees[si-1]
mov bx, entrees[si]
;code porte nand
and ax,bx
not ax
and ax,1
mov entrees[si+1], ax
add di, 6
loop boucle |
J'ai besoin de ce code assembleur dans un programme réalisé en C... il sert a effectuer une operation logique sur les valeurs d'un tableau.
Une fois transcrit (pour passer a des registres 32 bits, y'a pas grand chose a faire mais c'est un mal nécéssaire) on a ca (le code est inclu dans une fonction) :
Code: |
int evalCircuit(long* circuit, long* entrees)
{
__asm {
;initialisation
mov esi, 0
mov ecx, 4
mov edi, 4
boucle:
mov esi, circuit[edi]
mov eax, entrees[esi-1] //le tableau esi commence a 0, je dois donc soustraire l'indice de 1
mov ebx, entrees[esi]
;code porte nand
and eax,ebx
not eax
and eax,1
mov entrees[esi+1], eax
add edi, 6
loop boucle
}
return entrees[NbPortes+NbEntrees];
} |
Le problème est le suivant, dans mon VC++ Express, le code assembleur ne fonctionne pas (le débugger non plus, ce qui ne me facilite pas la tache) et j'ai le droit a une violation d'accès en lecture dès que le programme arrive au code assembleur...
Merci d'avance !
|
|
Revenir en haut de page |
|
|
mickael44 Administrateur
Inscrit le: 05 Juin 2005 Messages: 5837 Localisation: Rennes / Ille Et Vilaine
|
Posté le: 08 Juin 2007 à 22:13 Sujet du message: |
|
|
Salut,
J'ai pas reçu beaucoup de leçons en assembleur mais je n'arrive pas à voir comment ton code fonctionne.
"circuit" doit être quelque chose mais je ne le voie pas dans ton code ....
Pareil pour "entrees".
Donc, on pour la version C mais comment t'est tu débrouiller dans la version assembleur ...
Peut-tu expliquer le principe du programme et comment il fonctionne ? |
|
Revenir en haut de page |
|
|
truffo
Inscrit le: 31 Oct 2005 Messages: 120
|
Posté le: 09 Juin 2007 à 11:18 Sujet du message: |
|
|
Autant pour moi, j'ai oublié la déclaration de tableaux dans le code emu8086 :
Code: |
circuit dw 2,4,1,2,3,1,3,4,2,3,5,4,5,6
entrees dw 0,0,0,0,0,0,0,0,0,0,0,0 |
|
|
Revenir en haut de page |
|
|
Ajouter à :
|
|