18.07.2013 Views

Nintendo Entertainment System

Nintendo Entertainment System

Nintendo Entertainment System

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!