Új hozzászólás Aktív témák

  • kovisoft

    őstag

    válasz BTminishop #12079 üzenetére

    Előre szólok, hogy nagyon csúnya és nagyon nem hatákony megoldás következik: :)

    Van az R1, R2 regiszterünk, R3=0, R4=0. Írsz egy ciklust, ami egyesével csökkenti (decrement) az R1-et, ezzel egyidőben egyesével növeli (increment) R3 és R4-et, amíg R1 el nem érte a 0-t. Ekkor R3 és R4-ben R1 van. Ezután kell egy másik ugyanilyen ciklus, ami ugyanazt csinálja, mint az első, csak most az R3-at dekrementálja, és az R1 és R4-et inkrementálja. Ennek a végén R4-ben már 2*(R1 kiinduló értéke) lesz, és R1 újra a kiinduló értéken van.

    Na most ezt az egészet beágyazod egy külső ciklusba, ami az R2-n megy végig lefelé, minden egyes belső ciklus végrehajtásakor dekrementálva R2-t, amíg R2 is 0 nem lesz. Mivel igazából két belső ciklus van, ezért mindegyik végrehajtása előtt ellenőrizni kell, hogy elérte-e R2 a 0-t.

    És a legvégén R4-ben ott lesz (R1 kiinduló értéke)*(R2 kiinduló értéke), miközben végig csak increment, decrement, feltételes jump utasításokat használtunk.

    [ Szerkesztve ]

Új hozzászólás Aktív témák