Programmeren in TI-83+ Assembly/Geheugenbeheer/Het gebruik van ldir

Uit Wikibooks

Programmeren in TI-83+ Assembly

Voorblad / Inhoudsopgave

Assembly-basis

1 · 2 · 3 · 4 · 5 · T

Controle

1 · 2 · 3 · 4 · 5 · T

Geheugenbeheer

1 · 2 · 3 · 4 · 5 · T

Input en output

1 · 2 · 3 · 4 · 5 · T

Tekenen

1 · 2 · 3 · 4 · 5 · T

Registers en procedures

1 · 2 · 3 · 4 · 5 · T

Applications

1 · 2 · 3 · 4 · T

Gebruikersvariabelen

1 · T

Extra

1 · T

Speciaal

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.

  1. Neem (hl) en sla dit op in (de).
  2. Verhoog zowel hl en de met één.
  3. 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...
← Arrays en matrices Het gebruik van ldir Verschuivingen →
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.