Programmeren in TI-83+ Assembly/Assembly-basis/De stack: verschil tussen versies

Naar navigatie springen Naar zoeken springen
(opdracht)
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>
...bezig...
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.
...bezig...
}}
}}
775

bewerkingen

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

Navigatiemenu