A jinak bych nenazýval tu smyčku s šestnáctibitovým counterem jako naivní variantu, je to prostě nejčitelnější a správné řešení.
Tady ty hacky v diskuzi kolikrát nepřežijí přesun pracovního prostoru na jinou adresu.
Ta varianta s pseudo 16-bitovym registrem AB je validní, ale na zásobník se mnohem lépe ukládá BC než AB.
Myslim ze treba ten hack s testovanim bitu prezije cokoliv. Ze u tri po sobe jdoucich adresach se vzdy najde 1 bit u ktereho se bude kazdy lisit od zbyvajichich dvou. Mozna ani nemusi byt po sobe jdouci.
A u toho prikladu kde vyplnujes adresu 0x58.. a 0x59.. jdou udelat obe varianty s jak sestupnym tak vzestupnym posunem indexu.
Pravdu mas s tim ze pri jinych prikladech, kdy nelezi zacatky a konce (vyjma) na nulovych bajtech nizsi adresy muze byt kod s djnz efektivnejsi. Ale to je proste psani asembleru pro Z80. Efektivni kod se bude lisit podle konstant.
Dokonce nekdy muzes vzit nejlepsi kod a napsat o bajt kratsi jen tim ze ho ulozis na jedinou spravnou konkretni adresu do pameti.
Zajimave cviceni je napsat kod typu
cp DEHL, 32bitova konstanta
To je fakt temny les kolik optimalizaci tady muze vzniknout a co vsechno se da vyuzit. Jen to tomhle by se dal napsat fakt dlouhy clanek.
Jop. Z80 měla hromadu nedokumentovaných instrukcí, narazil jsem na to, když jsem v mládí programoval emulátor, že jsem u některých pokročilejších programech, které jsem pak něm spouštěl, narážel na neznámé instrukční sekvence ... a netušil jsem, co mají ty sekvence dělat, protože neoficiální dokumentace těch instrukcí se v té době - internet neměl kde kdo - blbě sháněla