Programmeren in TI-83+ Assembly/Tekenen/Pixels tekenen: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Willem1 (overleg | bijdragen)
Geen bewerkingssamenvatting
Willem1 (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 1:
{{Programmeren in TI-83+ Assembly inhoud}}
 
Het tekenen van losse pixels lijkt nutteloos. Maar vaak is het toch handig om het te kunnen. Bijvoorbeeld, door een for-loop van pixels kun je een lijn tekenen. Als eerste gaan we het geheugenadres bepalen van een pixel waarvan we de x- en de y-coördinaat weten.
 
Regel 5 ⟶ 7:
 
Eerst schrijven we het algoritme op.
# Zet de x-coördinaat (van 0 t/m 95) in ab en de y-coördinaat (van 0 t/m 63) in ba.
# Vermenigvuldig ba (= de y-coördinaat) met 12 (iedere rij bevat 96/8 = 12 bytes. Dus dit is eigenlijk het nummer (t.o.v. het begin van de tekenbuffer) van de eerste byte in de rij).
# Deel b door 8 (iedere byte bevat 8 pixels). Tel het geheel deel van de deling bij de vorige uitkomst op. Dit is het nummer (t.o.v. het begin van de tekenbuffer) van de byte waarin de gevraagde pixel staat.
# Tel hierbij plotSScreen op. We hebben nu het geheugenadres van de byte waarin de gevraagde pixel staat.
# De rest van de deling uit stap 3 is het nummer van de bit in de byte (als je van 1 naar 8 telt).
 
 
<big>1. Coördinaten laden</big><br/>
Dat moet de aanroeper van de methode doen.
 
<big>2. Vermenigvuldigen met 12</big><br/>
Hoe doen we dat?
* Vermenigvuldigen met 2 geeft 2a.
* Vermenigvuldigen met 2 geeft 4a.
* Vermenigvuldigen met 2 geeft 8a.
* 8a + 4a = 12a
Er is alleen één probleem. Stel a=30. Dan 12a=360. Dat past helemaal niet in a...
We moeten dus eerst a overzetten op hl om de berekening te kunnen uitvoeren.
<pre> ld h, 0 ; a overzetten op hl
ld l, a
add hl, hl ; dit geeft 2a
add hl, hl ; dit geeft 4a
ld de, hl ; het resultaat van 4a opslaan in de
add hl, hl ; dit geeft 8a
add hl, de ; 8a + 4a = hl + de = 12a</pre>
'''Dit moet nog getest worden.'''
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.