Programmeren in TI-83+ Assembly/Input en output/Logische en bit-instructies

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

In dit hoofdstuk komt er weer een lading instructies om logische bewerkingen uit te voeren en individuele bits aan te passen.

Logische instructies

bewerken

Er zijn vier logische instructies.

and vergelijkt van twee registers (a en een ander register) iedere bit. Als beide bits aan zijn, gaat in de uitvoer de bit ook aan. De uitvoer wordt dan in a opgeslagen. and roep je aan met

    and (reg)

met (reg) is een 8-bit-register en natuurlijk niet a. Je mag ook direct een getal opgeven. Aangezien het eerste register toch altijd a is, hoef je dit niet door te geven.

Voorbeeld: a=23 (=00010111) en b=11 (=00001011). and b geeft dat a=00000011.

or vergelijkt van twee registers (a en een ander register) iedere bit. Als minstens één van beide bits aan is, gaat in de uitvoer de bit ook aan. De uitvoer wordt dan in a opgeslagen. or roep je aan met

    or (reg)

met (reg) is een 8-bit-register en natuurlijk niet a. Je mag ook direct een getal opgeven. Aangezien het eerste register toch altijd a is, hoef je dit niet door te geven.

Voorbeeld: a=23 (=00010111) en b=11 (=00001011). or b geeft dat a=00011111.

xor vergelijkt van twee registers (a en een ander register) iedere bit. Als één van beide bits aan is (dus níét als ze allebei aan zijn), gaat in de uitvoer de bit ook aan. De uitvoer wordt dan in a opgeslagen. xor roep je aan met

    xor (reg)

met (reg) is een 8-bit-register en natuurlijk niet a. Je mag ook direct een getal opgeven. Aangezien het eerste register toch altijd a is, hoef je dit niet door te geven.

Voorbeeld: a=23 (=00010111) en b=11 (=00001011). xor b geeft dat a=00011100.

cpl neemt register a en draait ieder bit om (0 wordt 1 en 1 wordt 0). De uitvoer wordt dan in a opgeslagen. cpl roep je aan met

    cpl

Aangezien het register toch altijd a is, hoef je dit niet door te geven.

Voorbeeld: a=23 (=00010111). cpl geeft dat a=11101000.

Bit-instructies

bewerken

Er zijn drie bit-instructies. Met deze instructies is het mogelijk om bepaalde bits in een register te veranderen.

set zet een bit van een bepaald register op 1. set roep je aan met

    set bitnummer, (reg)

(reg) is een register of (hl).

res zet een bit van een bepaald register op 0. res roep je aan met

    res bitnummer, (reg)

(reg) is een register of (hl).

bit kijkt naar de waarde van een bit van een bepaald register. Als deze 1 is, gaat de zero-vlag aan. Anders gaat deze uit. bit roep je aan met

    bit bitnummer, (reg)

(reg) is een register of (hl).

Systeemvlaggen

bewerken

Systeemvlaggen zijn bits op een bepaalde plek in het geheugen die het gedrag van de rekenmachine bepalen. Je kunt een systeemvlaggen aan- en uitzetten met de instructies hierboven. Bijvoorbeeld: zet de systeemvlag TextInverse (alle tekst wordt nu wit geschreven op een zwarte achtergrond) aan.

    ld hl, $89F5
    set 3, (hl)

Hieronder een tabel met een paar belangrijke (en leuke) systeemvlaggen. In de kolom Voorbeeld zie je hoe je de systeemvlag aan zet.

Naam Geheugenadres Bitnummer Voorbeeld Wat gebeurt er als deze aan is?
TextInverse $89F5 3 ld hl, $89F5
set 3, (hl)
Alle tekst wordt wit geschreven op een zwarte achtergrond.
IndicRun $8A02 0 ld hl, $8A02
set 0, (hl)
De run-indicator is aan (het flikkerende balkje rechtsboven in het scherm).
LwrCaseActive $8A14 3 ld hl, $8A14
set 3, (hl)
Je kunt voortaan kleine letters op het basisscherm typen (alpha-alpha).
DonePrgm $89F0 5 ld hl, $89F0
set 5, (hl)
"Done" wordt getoond na het uitvoeren van een TI-Basic-programma.
  ← Input en output Logische en bit-instructies Strings schrijven →  
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.