Programmeren in TI-83+ Assembly/Extra/Debuggen

Uit Wikibooks

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

Als er een fout in het programma geeft, dan merk je dat doordat het programma verkeerde resultaten geeft. De oorzaak van de fout ontdekken is altijd een stuk lastiger, omdat de fout, vooral bij Assembly, overal in de code kan zitten. Een hulpmiddel daarbij is de Flash Debugger die we tot op dit moment alleen als emulator gebruikten. In dit programma zitten ook goede gereedschappen om fouten op te sporen.

Een voorbeeld[bewerken]

Om debuggen aan te leren, gebruiken we een simpel voorbeeldprogramma om tekst op het scherm te schrijven:

.nolist
#include "ti83plus.inc"
.list
.org   $9D93
.db    t2ByteTok, tAsmCmp

    ld hl, 50
    ld (PenRow), hl
    ld hl, 10
    ld (PenCol), hl
    ld hl, Tekst
    bcall(_VPutS)

Tekst:
    .db "De tekst", 0

.end
.end

De eerste fout[bewerken]

In dit programma zit een grote fout. Probeer deze zelf te zoeken, dat is een goede oefening. Als je het niet weet, draai het programma dan in de Flash Debugger. Als je het dan nog steeds niet weet, kijk dan op Programmeren in TI-83+ Assembly/Assembly-basis/Het eerste programma.


In het volgende programma is deze ernstige fout verbeterd:

.nolist
#include "ti83plus.inc"
.list
.org   $9D93
.db    t2ByteTok, tAsmCmp

    ld hl, 50
    ld (PenRow), hl
    ld hl, 10
    ld (PenCol), hl
    ld hl, Tekst
    bcall(_VPutS)
    ret

Tekst:
    .db "De tekst", 0

.end
.end

De tweede fout[bewerken]

De uitvoer van het programma.

Compileer de code en draai hem in de Flash Debugger. Het resultaat is nog niet geweldig: afgezien van het feit dat het scherm niet van tevoren leeggemaakt wordt, staat de tekst niet op de bedoelde plaats! Het is ongetwijfeld de bedoeling van de programmeur geweest om de tekst op kolom 10 te zetten en op rij 50; de tekst verschijnt echter toch bovenaan het scherm. Zie de schermafdruk hiernaast.

Misschien weet je hoe dit komt, doe dan toch de volgende stappen om het debuggen te leren.

Het disassembly-venster[bewerken]

Zet als eerste de emulator stop. Klik daarna op View > Disassembly. Het resultaat is een venster met daarin allerlei tekens. Dit is een weergave van het RAM-geheugen van de emulator-rekenmachine, dat weer terug omgezet is in assembly-code. In de linkerkolom zie je het geheugenadres, in de middelste kolom staat de inhoud van het geheugen, aan de rechterkant staat de processorinstructie die daarbij hoort.

Klik nu met de rechtermuisknop binnen het venster en klik op Go To Address.... Typ in: 9DC3. Je zou nu de code van het programma in de rechterkolom moeten zien, beginnend met

LD  HL, 0032

Deze code ziet er wel iets anders uit dan de code die we hebben ingegeven, zo zijn bijvoorbeeld de labels eruit gehaald. Dit is volkomen normaal.

Breakpoints instellen[bewerken]

Nu gaan we zogenaamde breakpoints instellen

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.