Programmeren in TI-83+ Assembly/Speciaal/Antwoorden van de opdrachten

Uit Wikibooks

Hieronder vind je de antwoorden van de opdrachten, gesorteerd op paragraaf.

Dit is vooral bedoeld voor de PDF-uitvoer van dit boek.

1.3 Registers[bewerken]

Opdracht:

Maak een programma dat het getal 14 in het register a laadt, en dit daarna overzet naar register b.

Vul de standaardcode zelf aan.

    ld a, 14    ; 14 in a laden
    ld b, a     ; a in b laden
    ret         ; terug naar TI-OS

1.4 Variabelen[bewerken]

Opdracht:

Maak een programma met een variabele Getal, die aan het begin van het programma 0 bedraagt. Aan het eind van het programma moet de variabele 2 bedragen.

Vul de standaardcode zelf aan.

    ld a, 2          ; 2 in a laden
    ld (Getal), a    ; het getal in a in Getal laden (haakjes!)
    ret              ; terug naar TI-OS

Getal:
    .db 0

Merk op dat je 2 niet direct in (Getal) kunt laden, dit moet via een register (in dit geval a).

2.1 Springen en subroutines[bewerken]

Opdracht:

Maak een programma dat vier keer een tekst op het scherm schrijft. Gebruik daarvoor een subroutine met een bcall. Roep deze vier keer aan.

Vul de standaardcode zelf aan.

    call TekstSchrijven      ; TekstSchrijven aanroepen
    call TekstSchrijven      ; ... en nog een keer ...
    call TekstSchrijven
    call TekstSchrijven
    ret                      ; Terug naar de TI-OS.

TekstSchrijven:
    ; Let op, níét PenCol instellen, want dan zouden de "Hallo!"'s iedere keer op dezelfde plek komen!
    ld    hl, Tekst          ; Laad het label in hl.
    bcall(_PutS)             ; Zet de tekst, die staat vanaf hl (dus het label) op het scherm.
    bcall(_NewLine)          ; Zet de cursor op de volgende regel op kolom 0.
    ret                      ; Terug naar de hoofdmodule.

Tekst:                       ; Label Tekst
    .db "Hallo!", 0          ; Voeg aan het programma de tekenreeks "Hallo!" toe, gevolgd door een nul.

2.5 Loops[bewerken]

Opdracht:

Pas de opdracht van paragraaf 1 van dit deel aan, en gebruik nu een for-loop.

Vul de standaardcode zelf aan. Deze oplossing is nog niet getest!

    ld b, 4

BeginLoop:
    call TekstSchrijven      ; TekstSchrijven aanroepen
    djnz BeginLoop           ; Één aftrekken van b en als het resultaat niet 0 is, naar BeginLoop springen

EindLoop:
    ret                      ; Terug naar de TI-OS.

TekstSchrijven:
    ; Let op, níét PenCol instellen, want dan zouden de "Hallo!"'s iedere keer op dezelfde plek komen!
    ld    hl, Tekst          ; Laad het label in hl.
    bcall(_PutS)             ; Zet de tekst, die staat vanaf hl (dus het label) op het scherm.
    bcall(_NewLine)          ; Zet de cursor op de volgende regel op kolom 0.
    ret                      ; Terug naar de hoofdmodule.

Tekst:                       ; Label Tekst
    .db "Hallo!", 0          ; Voeg aan het programma de tekenreeks "Hallo!" toe, gevolgd door een nul.

Opmerking: in dit geval is het niet veel korter, maar vooral bij 5 of meer herhalingen is dit erg nuttig.

4.4 getKey[bewerken]

Opdracht:

Schrijf een programma dat de toetscode van de ingedrukte toets, die door _getKey wordt teruggegeven, naar het scherm schrijft. Dit programma kun je dan direct gebruiken om een toetscode te vinden, mocht je die niet kunnen vinden.
Je kunt ook proberen om hetzelfde programma met _getCSC te schrijven.

Versie met _getKey
Een mogelijk antwoord zie je hier. Vul de standaardcode zelf aan.

    bcall(_ClrLCDFull)  ; scherm leegmaken
    bcall(_getKey)      ; de toetscode staat nu in a

    ld hl, 0
    ld (CurRow), hl     ; tekst op bovenste regel
    ld hl, tekst
    bcall(_PutS)        ; tekst "Toetscode:" weergeven

    ld h, 0             ; a overzetten naar hl
    ld l, a

    bcall(_DispHL)      ; hl = toetscode op het scherm schrijven
    bcall(_NewLine)     ; nieuwe regel, anders komt "Done" over het getal te staan

    ret                 ; terug naar de TI-OS

tekst:
    .db "Toetscode:", 0

a wordt hier eerst overgezet naar hl, om ervoor te zorgen dat je deze met bcall(_DispHL) gemakkelijk op het scherm kunt schrijven.

Versie met _getCSC
Zie de versie met _getKey. Je moet enkele dingen aanpassen, dit kun je zelf doen.
Hint: zet _getCSC in een while-loop om ervoor te zorgen dat het programma wacht totdat je een toets ingedrukt hebt. Dus, in pseudocode:

while a=0
    bcall(_getCSC)
end

5.1 De tekenbuffer[bewerken]

Opdracht:

Probeer om het hele scherm zwart te maken. Hint: je kunt een for-loop gebruiken.
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.