Programmeren in TI-83+ Assembly/Assembly-basis/Registers
Uit Wikibooks
|
|
|
|
Op deze pagina vind je alles over registers. Registers zijn opslagplaatsen voor data, net zoals je in andere programmeertalen variabelen hebt.
Inhoud |
[bewerken] Soorten registers
Er zijn twee soorten registers: 8-bit-registers en 16-bit-registers.
[bewerken] 8-bit-registers
8-bit-registers kunnen 8 bits aan gegevens opslaan (de naam zegt het al). Dat is een getal van 0 tot en met 255. De 8-bit-registers heten: a, b, c, d, e, f, h, l.
[bewerken] 16-bit-registers
Deze 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).
[bewerken] ld
Nu 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 het commando ld. Dit commando werkt als volgt.
ld a, b
Dit commando laadt de gegevens uit register b in register a.
ld a, 0
Dit commando laadt het getal 0 in register a.
ld hl, tekst
[...]
tekst:
.db "Hoi", 0
Dit commando laadt het adres van tekst: in hl, in dit geval dus het adres van "Hoi" (de nul achter "Hoi" zorgt ervoor dat de string eindigt). Andere commando's kunnen dat dan gebruiken. Dit lijkt misschien niet zo belangrijk, maar dat is het wel. Zie het hoofdstuk over variabelen.
Soms is het beter om bepaalde registers te gebruiken als je bepaalde dingen wil doen. Soms heb je zelfs geen andere keuze. Wil je bijvoorbeeld getallen optellen, dan moet je één getal in a hebben. (a is de accumulator, het register waarin het getal staat waarmee je kunt rekenen. Er zijn bijvoorbeeld instructies om een getal bij a op te tellen)
[bewerken] Problemen bij het gebruik van registers
Er 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.
[bewerken] Opdracht
Maak een programma dat het getal 14 in het register a laadt, en dit daarna overzet naar register b.
Een mogelijk antwoord zie je hier. Vul de standaardcode zelf aan.
ld a, 14 ; 14 in a laden
ld b, a ; a in b laden
ret ; terug naar TI-OS
| ← Het eerste programma | Registers | Variabelen → |