CPU kvízeček na páteček :-)
Pavel Troller
patrol na sinus.cz
Pátek Červen 11 11:48:10 CEST 2010
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
> Na 3 teda neviem, ale co toto?
>
> LD HL, navestie
> LD SP, HL
> LD BC, 0
> navestie PUSH BC
> JMP (HL)
>
> miro
>
>
> 2010/6/11 Pavel Troller <patrol na sinus.cz>:
> >
> > Zdravím,
> > tedy pánové, ty vaše nápady jsou složité jak LHC :-). Napovím:
> > Pro Z80 má řešení (včetně úplné inicializace) 3 řádky v asm.
> > Pavel
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
More information about the Hw-list
mailing list