Re: CPU kvízeček na páteček :-)
Miroslav Šinko
sinkomiro na gmail.com
Pátek Červen 11 11:56:32 CEST 2010
Napad s CALL-om 3 byty od vrchu RAM som teda nemal celkom zly, len
nedotiahnuty :-)
Pre korektnost Vasmu rieseniu este traba pridat na adresu 0 jeden JP :-P
ale pekny rebusik
miro
2010/6/11 Pavel Troller <patrol na sinus.cz>:
> Zdravím,
> jak si to tak v hlavě emuluji, asi je to ono :-)! Program začne mazat těsně
> pod výkonnou smyčkou, napřed tedy umaže svoji ininicalizaci, vlastní smyčka
> má 2 jednobytové instrukce, takže poslední push smaže ten JP a sám sebe.
> Výborně!
> Moje řešení je zde:
> ORG 0FFFAH
> FFFA 31 LD SP,0FFFC
> FFFB FC
> FFFC FF
> FFFD CD CALL $
> FFFE FD
> FFFF FF
> Všimněte si, že jsou to opravdu 3 řádky, z toho jedna je dokonce jen
> pseudoinstrukce :-).
> Trik je v tom, že instrukce CALL $ na adrese FFFD bude ukládat jako
> návratovou adresu 0, čili mazat, a je vlastně jedinou instrukcí cyklu.
> Mazat se začne od adresy FFFB, čili se smaže kus první instrukce a jede
> se dolů. Po dosažení adresy 0 se SP zawrapuje a smaže operand instrukce
> CALL, poslední CALL tedy bude na adresu 0000 (a dojde k elegantnímu
> "odstartování" od začátku prázdné paměti) a poslední uložená návratová
> adresa smaže instrukci CALL a zbytek operandu instrukce LD SP,0FFFAH :-).
> Jednodušeji už to neumím ani já :-).
>
> Pavel
>
More information about the Hw-list
mailing list