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