Programmeren in TI-83+ Assembly/Controle/Het register f
Uit het hoofdstuk Registers ken je al het register f. Dit register is echter anders dan de andere registers die je al kent; je kunt het niet rechtstreeks wijzigen.
De opbouw van het register f
bewerkenHieronder zie je een schema hoe het f-register in elkaar zit. De bovenste rij geeft het nummer van de bit, de onderste rij geeft de functie. Iedere kolom in de tabel is een vlag; zo'n vlag is een bit in het register f.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
Sign | Zero | - | Half-carry | - | Parity-overflow | Add-subtract | Carry |
Er zijn twee vlaggen die nu voor ons van belang zijn. Als een vlag 1 is (ook wel set genoemd; 0 heet ook wel reset), betekent dit het volgende.
Zero
bewerkenDe vorige berekening had als uitkomst 0. Ofwel, als de processor een berekening uitvoert (bijvoorbeeld met add of sub) waarbij de uitkomst 0 is, dan zorgt hij ervoor dat deze vlag set wordt.
Carry
bewerkenDe vorige berekening had een uitkomst die groter was dan wat er in het register paste. Zie het volgende voorbeeld. Tel de (binaire) getallen 1101 en 1000 op. Het resultaat is 10101. Ofwel, er is één bit meer nodig om het antwoord op te slaan. Het resultaat van deze bewerking wordt dan 0101 en de Carry-vlag wordt 1 gemaakt. Als een aftreksom een antwoord kleiner dan nul opleverde, gaat de Carry-vlag ook aan. Wil je de Carry-vlag 1 maken, dan gebruik je de instructie scf (Set Carry Flag) Wil je de Carry-vlag veranderen (dus 1 wordt 0 en omgedraaid), dan gebruik je de instructie ccf.
Wijzigen van f Zoals hierboven gezegd is, kun je f niet zomaar wijzigen: ld f, 5 werkt bijvoorbeeld niet. Je kunt wel af aanpassen, f verandert dan mee. Denk eraan dat de vlaggen dan dus weg zijn. |