146 Strojni jezik za procesor Z280 ZANKA NADOL NAGOR HORI Z NALEVO NADESN PUSH AF CALL NASLOV. LD .HLI, A INC. HL SEDMI A DEC B FOP. AF DEC A "JR MNZ, ZANKA POP BC ExX PUSH BC ExX POP DE tD A,.B CP OD JR Z, HORIZ JR C, NAGOR LD A, B SUB 16' LD B, A JR NHORIZ LD A, B ADD A, 16 LD B, A MDO AJE CP E JR CC, NADESN UDIA,.€ SUB 16 UD 0, A JR VEN (Dr aoEI, ADD A, 16 (DELA sNajprej bomo z ZANKO izbrisali ssliko metulja, tj. ustreznim zlo- zgom na zaslonu bomo dali vrednost 50. Ker se koordinati vedno nanaša- sta na levi bit (bit 7), ima A po sklicu NASLOVa vrednost 0. sNaslednja vrstica. 5Je zanka že končana? zČe še ni, jo ponovi. sDaj koordinatama začetno vrednost. s Zamenjaj registre, : zshrani koordinate Krpana na sklad sin ponovno zamenjaj registre. sSpravi koordinate Krpana v DE. sPrimerjaj koordinati y junaka in zmetulja. sČCe sta enaki, skoči naprej. sČe je Krpan više od metulja, smora metulj navzgor, ssicer pa navzdol. (V tem primeru szmanjšaj koordinato y metulja sin skoči naprej. zZa dvig je treba višino povečati. ;sZdaj pa še primerjava koordinat x. sče Je koordinata x metulja manjša sod Krpanove, naj gre metulj desno, zssicer pa levo. V tem primeru szmanjšaj oddaljenost od levega zroba in sskoči naprej. 3sZa pomik v desno... 5...povečaj oddaljenost od levega roba. Zdaj moramo preveriti, ali ni metulj ob premiku zadel klju- ča dali junaka igre. Samo testiranje bo tu nekoliko bolj zaple- teno, zato ga bomo oblikovali kot podprogram z naslovom METST Kar se Janezek nauči... 147 (MEtul jev TeST). Za testiranje bomo uporabljali četrte zloge na posameznih položajih. VEN PUSH BC sShrani koordinate. LD A, B SUB 4 sKoordinata četrtega zloga. LD B, A CALL NASLOV CALL METST s Izračunaj njen naslov ter kliči zpodprogram za testiranje. INC HL sNaslov sosednjega zloga - CALL METST zpreveri njegovo vsebino. LD A, B s Zdaj pa še dva zloga, ki sta SUB 8 zosem vrstic niže. LD B, A CALL NASLOV CALL METST sPonovi isti postopek. INC. HL CALL METST POP BC sPoberi koordinate s sklada. LD DE, LIKI2 sNa naslovu LIKI2 so shranjene sslike metulja. RET sVrni se v zanko METULJ. S podprogramom METST ugotavljamo, ali je metulj zadel ključ ali junaka še preden se je metulj v resnici premaknil. Seveda videt, kako metulj "požre" junaka in bomo šele potem zaključili igro. Zato bomo v podprogramu uporabili zlog TESTI. Ce bo metulj zadel Krpana, bo TESTI vrednost 1. Ta zlog bomo kontrolirali, ko bo premik že želimo na zaslonu rezerviran dobil opravljen - in ustrezno ukrepali. Vendar moramo zaradi tega konec podprograma METULJ, in sicer bomo za ukazom EXX dodali tele vrstice: nekoliko dopolniti LD HL, TESTI sPreveri, ali je metulj zadel DEC (HL) sKrpana. Če ga ni,... RET NZ 5... Se vrni. CALL KONEC sSicer pokliči podprogram, ki bo szaključil igro. Zdaj pa k podprogramu METST. Katere zloge oz. bite testiramo v tem podprogramu boste najlaže razumeli, če boste pogledali sli- ke naših likov.