HLA tömb feltöltése

HLA tömb feltöltése
2017-12-24T12:23:06+01:00
2017-12-24T13:45:22+01:00
2022-07-19T02:35:55+02:00
l4rd
Sziasztok! Adott az alábbi feladat HLA-ban. Fel kellene tölteni a tömböt és visszatérési értéket számolni.
Sajnos a tesztelő program már a tömb feltöltésénél hibás eredményeket ad.
Amivel eddig próbálkoztam:

begin Fgv3; // tomb[0]=(i*j)*3; // for (k=1; k<N; k++) tomb[k]=(tomb[k-1]-j)%(i-1); // sum=0; // for (k=0; k<N; k++) sum=sum+tomb[k]*j-(tomb[k]-1)/3; // return sum; PUSH(EBX); PUSH(ECX); PUSH(EDX); PUSH(EDI); // TOMB FELTOLTESE MOVZX(j, EBX); // EBX = j MOV(i, EDX); // EDX = i INTMUL(EBX, EDX); // EDX = i * j INTMUL(3, EDX); // EDX = (i*j)*3 MOV(tomb, EDI); // EDI = tomb cime MOV(EDX, [EDI]); // tomb[0]=(i*j)*3 MOV(N, ECX); CIKL: DEC(ECX); JZ CIKL_END; MOVZX(j, EBX); // EBX = j MOV([EDI], EDX); // EDX = tomb[K-1] SUB(EBX, EDX); // EDX = (tomb[k-1]-j) MOV(EDX, EAX); // EAX = (tomb[k-1]-j) MOV(i, EBX); // EBX = i DEC(EBX); // EBX = i - 1 CDQ; IDIV(EBX); // (tomb[k-1]-j)%(i-1) ADD(4, EDI); // tomb index novelese MOV(EAX, [EDI]); // tomb[k] = EREDMENY JMP CIKL; CIKL_END: // TOMB FELTOLTES VEGE POP(EDI); POP(EDX); POP(ECX); POP(EBX); end Fgv3; A segítséget előre is köszönöm és Boldog Karácsonyt mindenkinek, aki ezt olvassa! :)
Mutasd a teljes hozzászólást!
"tomb[k]=(tomb[k-1]-j)%(i-1);" szerint a maradékot kéne eltárolnod (EDX), nem a hányadost (EAX, ami most van)
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd