-
Fototrend

Új hozzászólás Aktív témák
-
válasz
BTminishop
#12079
üzenetére
akkumulátor használatával:
loop R2:
add R1 // ACC += R1
endloop
store R3 // ACC -> R3vagy ha nincs ilyen add utasítás:
clear R3
loop R1
loop R2
inc R3
endloop
endloopmondjuk jó kérdés, hogyan nullázol ki egy regisztert egyoperandusú utasítással (ha nincsenek akkumulátor utasítások)
De rájöttem (asszem):
push 0
pop R3
push R1
pop CX
:loop_R1
push CX
push R2
pop CX
:loop_R2
inc R3
loop loop_R2
pop CX
loop loop_R1 -
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.
-
válasz
BTminishop
#12079
üzenetére
"R3 = R1*R2"
Ez itt konkrétan a megoldás a kétoperandusúakhoz (merthogy az értékadás és a szorzás is az)

Egyoperandusúval meg nem fogod tudni leírni, már magának a műveletnek a jellegéből adódóan.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Kormányok / autós szimulátorok topikja
- Napelem
- Arc Raiders
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Milyen alaplapot vegyek?
- TCL LCD és LED TV-k
- Mibe tegyem a megtakarításaimat?
- Renault, Dacia topik
- További aktív témák...
- LG 65C3 - 65" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
- ÚJ HP EliteBook 6 G1a Ryzen 5 PRO 230 4.9GHz 16GB DDR5 512GB FHD+ 16:10 már jobbik kijelző, gar 2028
- Új Asus 16 TUF WUXGA 144Hz G-Sync Ryzen AI 9 HX 370W 32GB 2TB SSD Nvidia RTX4060 140W Win11 Garancia
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- HIBÁTLAN iPhone 12 Pro Max 128GB Pacific Blue -1 ÉV GARANCIA - Kártyafüggetlen, 100% Akkumulátor
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs



