Programmeren in TI-83+ Assembly/Assembly-basis/De stack: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
opdracht |
|||
Regel 37:
Verder kan het programma crashen als je heel veel registerparen op de stack legt (bij ongeveer 100).
==Opdracht==
De bcall <code>_PutS</code> vernielt het registerpaar <code>hl</code>. Schrijf een programma dat iets naar het scherm schrijft met <code>_PutS</code> en <code>hl</code> van het begin van het programma bewaart. Tip: met <code>bcall(_DispHL)</code> kun je <code>hl</code> wegschrijven naar het scherm om te kijken of je het goed gedaan hebt. {{Niet afdrukken|Als het niet lukt, kijk dan hieronder voor het antwoord.
{{Toggletext
|koptekst=Klap uit voor het antwoord
|hoofdtekst=
<pre>
bcall(_ClrLCDFull)
; hl gaat dadelijk vernield worden, dus we zetten hem op de stack:
push hl
; Als eerste laten we hl even zien op het scherm:
bcall(_DispHL)
bcall(_NewLine)
; Nu de tekst weergeven:
ld hl, 0
ld (CurCol), hl
ld hl, Tekst
bcall(_PutS)
bcall(_NewLine)
; We outputten hl om te laten zien dat hij inderdaad vernield is:
bcall(_DispHL)
bcall(_NewLine)
; hl wordt weer van de stack gelezen:
pop hl
; We kunnen zien dat hl weer hersteld is:
bcall(_DispHL)
bcall(_NewLine)
; Terug naar het TI-OS:
ret
Tekst:
.db "Dit is een tekst", 0
</pre>
Bij het draaien zie je drie cijfers. Het eerste en het derde zouden gelijk moeten zijn, dan is <code>hl</code> behouden.
}}
}}
|