PDA

View Full Version : [ASM] Calcolo MCD di n numeri


Andres7X
22-06-2009, 10:24
Ciao a tutti, sono nuovi di questo forum e spero di potermi trovare bene :)

Entro un paio di giorni devo consegnare un programma in Assembly che calcoli l'MCD tra n numeri. Ho utilizzato il metodo di Euclide e la ricorsione: ovvero, il primo l'ho usato per calcolare l'MCD tra due numeri. Siccome l'MCD è associativo, una volta calcolato quell'MCD passo a confrontare l'MCD ottenuto con un terzo numero, e così via.

Il codice è questo, ma non mi dà il risultato che vorrei:


MOV ESI,num
XOR EAX,EAX
XOR EBX,EBX
MOV EBX,intArray[ESI-1]
CDQ
Ciclo2: DEC ESI
CMP ESI,0
JE Fine
MOV EAX,intArray[ESI-1]

Ciclo: CMP EBX,0
JE Fine ; Se EBX è 0, allora è il M.C.D.

CDQ
DIV EBX ; Dividiamo EDX:EAX per EBX (il quoziente è in EAX e il resto in EDX)

CMP EDX,0
JE Ciclo2 ; Se EDX (il resto) è 0, allora EBX è l'M.C.D.

MOV EAX,EBX
MOV EBX,EDX
JMP Ciclo

Fine: MOV MCD,EBX


Certe volte, inoltre, con numeri troppo grandi la divisione mi dà overflow. Come mai?