Programmeren in TI-83+ Assembly/Assembly-basis/Registers
Op deze pagina vind je alles over registers. Registers zijn kleine, zeer snelle geheugens in de processor die worden gebruikt als tijdelijke opslagplaatsen voor data, net zoals je in andere programmeertalen variabelen hebt.
Soorten registers
bewerkenEr zijn twee soorten registers: 8-bit-registers en 16-bit-registers.
8-bit-registers
bewerken8-bit-registers kunnen 8 bits aan gegevens opslaan (de naam zegt het al). Dat komt overeen met een getal van 0 tot en met 255. De 8-bit-registers heten: a
, b
, c
, d
, e
, f
, h
, l
.
16-bit-registers
bewerkenDeze registers kunnen dus 16 bits aan gegevens opslaan. Dat is een getal van 0 tot 65535. Eigenlijk zijn deze registers combinaties van twee 8-bit-registers, bijvoorbeeld het register af
is een combinatie van a
en f
. De 16-bit-registers zijn: af
, bc
, de
, hl
. Let op: als je iets opslaat in een 16-bit-register, dan wis je de bijbehorende 8-bit-registers.
Voorbeeld: als je het geheugenadres $84AA opslaat in hl
, dan komt in h
$84 te staan en in l
$AA (zie figuur hiernaast).
ld
bewerkenNu we weten wat registers zijn, willen we er ook graag gebruik van maken. Ten eerste zullen we hier bespreken hoe je data in de registers laadt. Dit gaat met de instructie (commando voor de processor) ld. Deze instructie werkt als volgt.
ld a, b
Deze instructie laadt de gegevens uit register b
in register a
.
ld a, 0
Deze instructie laadt het getal 0 in register a
.
ld hl, tekst
[...]
tekst:
.db "Hoi", 0
Deze instructie laadt het geheugenadres van tekst: in hl
, in dit geval dus de plek waar "Hoi" in het geheugen staat. Dit is als het ware een soort verwijzing (pointer). Andere instructies, die data uit het geheugen willen hebben, kunnen dat dan gebruiken. Dit lijkt misschien niet zo belangrijk, maar dat is het wel. Zie de paragraaf over variabelen voor meer informatie hierover.
In principe zijn alle registers hetzelfde, maar soms is het beter om een bepaald register te gebruiken als je iets wilt doen. Soms heb je zelfs geen andere keuze. Wil je bijvoorbeeld getallen optellen, dan moet je één getal in a
hebben. Er zijn namelijk geen instructies om iets bij b
op te tellen. a
wordt ook wel de accumulator of het rekenregister genoemd.
Problemen bij het gebruik van registers
bewerkenEr is een groot probleem als je registers gebruikt om data op te slaan. De meeste instructies, zoals bcall's, gebruiken namelijk zelf ook registers! Als je een instructie hebt gebruikt, is er een goede kans dat je data opeens weg is. Gebruik dus geen registers om data voor langere tijd op te slaan. Hiervoor kun je bijvoorbeeld variabelen of de stack gebruiken, waarover je in een volgende les meer zult leren.
Opdracht
bewerkenMaak een programma dat het getal 14 in het register a
laadt, en dit daarna overzet naar register b
.
Het antwoord staat achterin het boek.