Je crée un programme très simple en langage assembleur. Pour créer un tableau avec les premiers nombres de fibonacci dedans. Cependant sur les lignes 53 j'essaie d'utiliser MOV bx,WORD PTR [fibonacciArray + 5]
et il dit qu'il est déjà défini le fibonacciArray
que j'ai pourtant c'est la seule manière que j'ai jamais vue PTR
utilisée.PTR dans l'assemblage redéfinit l'objet et ne fonctionnera pas
INCLUDE Irvine32.inc ;//Includes the Irvine32 library of functions
.data
fibonacciArray BYTE 0h,1h,0h,0h,0h,0h,0h ;only known f(0) = 0 && f(1) = 1
.code
main proc
MOV eax, 0 ;eax register is zeroed out
MOV ebx, 0 ;ebx register is zeroed out
MOV al, fibonacciArray ;al = 0
ADD al, [fibonacciArray + 1] ;al = 1
XCHG [fibonacciArray + 2], al ;fibonacciArray now 0,1,1,0,0,0,0
MOV eax, 0 ;eax register is zeroed out
ADD al, [fibonacciArray + 1] ;al = 1
ADD al,[fibonacciArray + 2] ;al = 2
XCHG [fibonacciArray + 3], al ;fibonacciArray now 0,1,1,2,0,0,0
MOV eax, 0 ;eax register is zeroed out
ADD al,[fibonacciArray + 2] ;al = 1
ADD al,[fibonacciArray + 3] ;al = 3
XCHG [fibonacciArray + 4], al ;fibonacciArray now 0,1,1,2,3,0,0
MOV eax, 0 ;eax register is zeroed out
ADD al,[fibonacciArray + 3] ;al = 2
ADD al,[fibonacciArray + 4] ;al = 5
XCHG [fibonacciArray + 5], al ;fibonacciArray now 0,1,1,2,3,5,0
MOV eax, 0 ;eax register is zeroed out
ADD al,[fibonacciArray + 4] ;al = 3
ADD al,[fibonacciArray + 5] ;al = 8
XCHG [fibonacciArray + 6], al ;fibonacciArray now 0,1,1,2,3,5,8
MOV bl,[fibonacciArray + 3]
call DumpRegs ;prints the register information to the screen
MOV bh,[fibonacciArray + 4]
call DumpRegs ;prints the register information to the screen
MOV bx,WORD PTR [fibonacciArray + 5]
call DumpRegs ;prints the register information to the screen
exit
main endp
end main
Voici le message d'erreur
1>------ Build started: Project: Project, Configuration: Debug Win32 ------
1>reorder.obj : error LNK2005: [email protected] already defined in fibonacci.obj
1>C:\Users\~~~~~~~~~~\Project32\Debug\Project.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Ce n'est pas ce que dit l'erreur. Il dit '_main @ 0 déjà défini dans fibonacci.obj'. Ce qui signifie que vous avez défini 'main' deux fois. Une fois dans 'reorder.obj' et une fois dans' fibonacci.obj'. Vous avez probablement voulu seulement avoir le fichier plus tard dans votre projet. –
MERCI! Je n'ai pas travaillé longtemps avec l'assemblée, évidemment. Fonctionne parfaitement maintenant. –