Bonjour !
Soit le code suivant, qui marche parfaitement bien sous emu8086 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 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 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
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 réécrit pour visual C :
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 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]; }
Merci d'avance !
Partager