Nintendo Entertainment System
Nintendo Entertainment System
Nintendo Entertainment System
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Labels<br />
3.2. INSTRUKSJONER<br />
Det er håpløst å prøve å huske adressene til hver bidige ting i programmet vårt. Som i andre<br />
språk er det nyttig å gi variabler og forskjellige deler av koden navn. Dette gjør vi ved å definere<br />
såkalte labels. Som vi så i forrige kapittel er disse på en måte som «merkelapper» i koden.<br />
Når vi definerer en label, forbindes navnet med adressen til det stedet der labelen er definert.<br />
Etter at labelen er definert kan vi benytte navnet dens når vi ønsker å referere til den aktuelle<br />
minneadressen. Vi definerer en label ved å skrive det ønskede navnet etterfulgt av :. La oss se<br />
på et eksempel:<br />
. segment " RAM "<br />
variabel1 : . byte 0<br />
variabel2 : . byte 0<br />
variabel3 : . byte 0<br />
. segment " CODE "<br />
; ...<br />
LDA variabel3<br />
Her definerer vi tre labeler. Den første, variabel1 vil korrespondere med adressen 0, den neste<br />
vil korrespondere med adressen 1, og så videre. For å repetere, direktivet .byte 0 forteller at<br />
det skal settes av én byte. Når ca65 kommer over instruksjonen LDA variabel3 vil den søke<br />
etter labeldefinisjonen og bytte labelen ut med adressen den svarer til. Fordelen med dette er at<br />
vi kan legge definisjonen av variabel3 et helt annet sted (eller vi kan definere flere variabler<br />
foran variabel3), uten at vi må endre alle instruksjonene som involverer denne variabelen.<br />
Vi skal også se at labeler brukes når vi utfører såkalte hopp i koden (se under.) Da oppgir vi<br />
labelen til det stedet i koden som vi ønsker at prosessoren skal hoppe til.<br />
3.2.2 Henting og lagring<br />
De viktigste instruksjonene er de som gjør oss i stand til å sette verdier inn i et register, flytte<br />
verdier mellom registrene, og lagre registerverdier i adresseområdet.