<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Zap%C4%99tlanie_operacji_wielobajtowych</id>
	<title>Zapętlanie operacji wielobajtowych - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Zap%C4%99tlanie_operacji_wielobajtowych"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Zap%C4%99tlanie_operacji_wielobajtowych&amp;action=history"/>
	<updated>2026-10-04T01:07:22Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Zap%C4%99tlanie_operacji_wielobajtowych&amp;diff=4329&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Zap%C4%99tlanie_operacji_wielobajtowych&amp;diff=4329&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Operacje na wielu kolejnych bajtach, jak kopiowanie danych z miejsca na miejsce, dodawanie lub odejmowanie liczb wielobajtowych itd. dobrze jest w celu skrócenia programu zapętlić.&lt;br /&gt;
&lt;br /&gt;
Zwłaszcza arytmetyka jest często zapisywana w postaci &amp;quot;rozpętlonej&amp;quot;, gdyż sterujący pętlą rozkaz CPX lub CPY zmienia znacznik C rejestru znaczników procesora kasując tym samym informację o przeniesieniu arytmetycznym. Łatwo się jednak tego problemu pozbyć. Zamiast:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    clc&lt;br /&gt;
    lda aaa&lt;br /&gt;
    adc bbb&lt;br /&gt;
    sta ccc&lt;br /&gt;
    lda aaa+1&lt;br /&gt;
    adc bbb+1&lt;br /&gt;
    sta ccc+1&lt;br /&gt;
    lda aaa+2&lt;br /&gt;
    adc bbb+2&lt;br /&gt;
    sta ccc+2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
piszemy (zakładając, że &amp;#039;&amp;#039;aaa&amp;#039;&amp;#039;, &amp;#039;&amp;#039;bbb&amp;#039;&amp;#039;, &amp;#039;&amp;#039;ccc&amp;#039;&amp;#039; to zmienne w głównej pamięci):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    clc&lt;br /&gt;
    ldx #$fd          ;$fd = $00 - (liczba bajtów w jednej zmiennej)&lt;br /&gt;
add lda aaa-$fd,x&lt;br /&gt;
    adc bbb-$fd,x&lt;br /&gt;
    sta ccc-$fd,x&lt;br /&gt;
    inx&lt;br /&gt;
    bne add&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oszczędzając 13 bajtów pamięci. Gdy zmienne są na stronie zerowej, adresy należy zwiększyć:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    clc&lt;br /&gt;
    ldx #$fd          ;$fd = $00 - (liczba bajtów w jednej zmiennej)&lt;br /&gt;
add lda zaaa+3,x&lt;br /&gt;
    adc zbbb+3,x&lt;br /&gt;
    sta zccc+3,x&lt;br /&gt;
    inx&lt;br /&gt;
    bne add&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ten ostatni przykład NIE będzie działał w trybie natywnym [[65C816]]&amp;#039;&amp;#039;&amp;#039; (bo wygenerowany adres, zamiast &amp;quot;zawinąć&amp;quot; się przez koniec strony zerowej do jej początku, zyska wartość powyżej $00FF).&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Niezbędnik kodera]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>