Programmeren in TI-83+ Assembly/Geheugenbeheer/Het gebruik van ldir
Met ldir kun je grote stukken data van de ene plaats naar de andere in het geheugen kopiëren.
Wat ldir doet
[bewerken]ldir roep je zonder argumenten aan:
ldir
Als ldir wordt aangeroepen, dan gebeurt er ongeveer het volgende.
- Neem (hl) en sla dit op in (de).
- Verhoog zowel hl en de met één.
- Verlaag bc één. Als bc = 0: stop. Als bc ≠ 0: ga naar 1.
Hoe gebruiken we ldir
[bewerken]Deze ingewikkelde structuur is er niet voor niets. Als je namelijk 10 in bc zet, in hl $AAAA en in de $AA00 dan worden juist de 10 bytes, volgend op $AAAA gekopieerd naar de 10 bytes volgend op $AA00. Dat komt namelijk doordat het proces dat wordt uitgevoerd als ldir wordt aangeroepen, eigenlijk een for-loop is met bc als teller. Iedere keer dat de lus doorlopen wordt, wordt er één byte gekopiëerd en daarna wordt ervoor gezorgd dat de volgende keer dat de lus doorlopen wordt, de volgende byte gekopieerd wordt.
Voorbeeld: kopieer 767 bytes die in het programma staan (als .db), naar PlotSScreen. (Voor het nut hiervan en voor uitleg wat PlotSScreen is, ga naar paragraaf De tekenbuffer).
Inventarisatie:
- 767 bytes kopiëren, dus bc = 767
- kopiëren naar PlotSScreen, dus de = PlotSScreen
- kopiëren vanaf een label, dus hl = eenLabel
ld bc, 767 ld de, PlotSScreen ld hl, DataLabel ldir ; het eigenlijke kopiëren ret ; terug naar TI-OS DataLabel: .db ...767 bytes aan data...