# Programmeren in TI-83+ Assembly/Geheugenbeheer/Arrays en matrices

Een array is een reeks van dezelfde soort variabelen. Bijvoorbeeld, als je 10 bedragen op wilt slaan, kun je een array maken met 10 getallen. In Assembly bestaat de structuur van een array helaas niet, dus die moet "met de hand" worden opgezet.

## Een simpele array maken

Om een serie bedragen op te slaan, kun je natuurlijk het volgende codefragment gebruiken.
enzovoorts.
Ten eerste is dit niet erg handig en het ziet er niet mooi uit. Bovendien maak je gemakkelijk typfouten. Ten tweede: stel je voor dat je in het register a een getal van 1 tot 10 hebt opgeslagen en je wilt dan bedrag nummer a hebben. Dat is op deze manier ook niet mogelijk.
Om een oplossing voor deze problemen te vinden, kijken we naar de regels hierboven. Je ziet dat het eerste bedrag wordt opgeslagen in appBackUpScreen. De algemene formule voor bedrag nummer a is dus appBackUpScreen + a als je a laat beginnen bij 0 voor het eerste element.
Hoe maken we hier nu een array van? Je begint met de positie van het eerste bedrag.
Als we nu het a-de bedrag willen aanspreken, dan moet je dus de hierboven genoemde formule inprogrammeren:
Nu kun je dit geheugenadres gebruiken om iets in op te slaan, bijvoorbeeld:

## Een stapgrootte die groter is dan 1

Wil je een serie teksten opslaan, dan heb je meer dan 1 byte per element nodig. Het aantal bytes per element heet de stapgrootte. Een voorbeeld:
enzovoorts.
* Keuze van de stapgrootte Zorg ervoor dat de stapgrootte minstens zo groot is als het grootste element; anders loop je het risico dat de elementen elkaar overschrijven!
De stapgrootte is bij het bovenstaande voorbeeld 8. De algemene formule voor bedrag nummer a is dus appBackUpScreen + 8*a als je a laat beginnen bij 0.
Om hier een element aan te spreken, moeten we eerst a vermenigvuldigen met 8 en het daarna bij de startwaarde optellen.
Nu kun je dit geheugenadres weer gebruiken om data te lezen en op te slaan.
* De grootte van a Als je het a-de element van een array aanroept, dan moet je op een paar dingen letten. Zorg er ten eerste voor dat a nooit zo groot is dat je het beschikbare geheugen overschrijdt, dit kan je programma laten crashen. Ten tweede is het belangrijk om in te zien dat het met de hierboven staande methode niet mogelijk is om een array van meer dan 255 bytes te maken, aangezien a niet meer dan 255 kan worden. Een oplossing hiervoor is om a eerst om te zetten naar hl en dan hl te vermenigvuldigen. Probeer dit zelf eens.

## Matrices

Als voorbeeld van een matrix gaan we hier een cijferlijst maken.
Je kunt een array maken met cijfers voor een vak, bijvoorbeeld met de cijfers 5, 7, 6 en 8. Dit is gewoon een normale array. Willen we nu echter meer dan één vak in de cijferlijst zetten, dan hebben we meerdere arrays nodig, voor ieder vak dus één. Die kun je één voor één maken, maar het is het ook mogelijk om de arrays van de vakken in een nieuwe array te zetten. Een dergelijke structuur heet een matrix. Kijk bijvoorbeeld naar de volgende cijferlijst als voorbeeld.
We moeten dus als eerste een array van vakken maken. Hierna bevat ieder element van de vakken-array nog een array, namelijk een array van 4 cijfers.