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