<?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=Inkrementacja_i_dekrementacja_liczb_wielobajtowych</id>
	<title>Inkrementacja i dekrementacja liczb 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=Inkrementacja_i_dekrementacja_liczb_wielobajtowych"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Inkrementacja_i_dekrementacja_liczb_wielobajtowych&amp;action=history"/>
	<updated>2026-10-01T18:22:25Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Inkrementacja_i_dekrementacja_liczb_wielobajtowych&amp;diff=2425&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=Inkrementacja_i_dekrementacja_liczb_wielobajtowych&amp;diff=2425&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;== Inkrementacja ==&lt;br /&gt;
&lt;br /&gt;
Sekwencja rozkazów zwiększająca wartość dwubajtowej liczby całkowitej o 1 jest powszechnie znana i często używana:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       inc zmienna&lt;br /&gt;
       bne koniec&lt;br /&gt;
       inc zmienna+1&lt;br /&gt;
koniec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sekwencja inkrementująca liczbę trzybajtową wygląda analogicznie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       inc zmienna&lt;br /&gt;
       bne koniec&lt;br /&gt;
       inc zmienna+1&lt;br /&gt;
       bne koniec&lt;br /&gt;
       inc zmienna+2&lt;br /&gt;
koniec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Niektóre asemblery (np. [[MADS]]) oferują tu ułatwiające życie pseudorozkazy, odpowiednio INW oraz INL.&lt;br /&gt;
&lt;br /&gt;
W przypadku liczb trzy- i więcej-bajtowych krótszy kod można uzyskać stosując pętlę (n - wielkość &amp;#039;&amp;#039;zmiennej&amp;#039;&amp;#039; w bajtach):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       ldx #-n&lt;br /&gt;
petla  inc zmienna-$0100+n,x&lt;br /&gt;
       bne koniec&lt;br /&gt;
       inx&lt;br /&gt;
       bne petla&lt;br /&gt;
koniec&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jeśli zaś chodzi o przeniesienie inkrementowanej wartości do innej zmiennej, pętla może wyglądać tak:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       ldx #-n&lt;br /&gt;
       sec&lt;br /&gt;
petla  lda zmienna_a-$0100+n,x&lt;br /&gt;
       adc #$00&lt;br /&gt;
       sta zmienna_b-$0100+n,x&lt;br /&gt;
       inx&lt;br /&gt;
       bne petla&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wykorzystano tu fakt, że rozkaz ADC dodaje do akumulatora wartość podanego argumentu plus wartość znacznika C.&lt;br /&gt;
&lt;br /&gt;
Pętle nie zadziałają prawidłowo, jeśli &amp;#039;&amp;#039;zmienna&amp;#039;&amp;#039; znajduje się na stronie zerowej, do tego trzeba je odpowiednio zmodyfikować. Patrz [[Ujemne indeksowanie]].&lt;br /&gt;
&lt;br /&gt;
== Dekrementacja ==&lt;br /&gt;
&lt;br /&gt;
Dekrementacja dwubajtowej liczby całkowitej jest nieco bardziej kłopotliwa, niż inkrementacja takowej:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       lda zmienna&lt;br /&gt;
       bne d1&lt;br /&gt;
       dec zmienna+1&lt;br /&gt;
d1     dec zmienna&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Przy liczbach trzy- i więcej-bajtowych krótszy kod uzyskamy stosując pętlę podobną do tej powyżej, wykorzystując fakt, że działanie znacznika C dla rozkazu SBC jest odwrotne niż dla ADC (SBC odejmuje od akumulatora podaną wartość zwiększoną o odwrotność znacznika C):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
       ldx #-n&lt;br /&gt;
       clc&lt;br /&gt;
petla  lda zmienna-$0100+n,x&lt;br /&gt;
       sbc #$00&lt;br /&gt;
       sta zmienna-$0100+n,x&lt;br /&gt;
       inx&lt;br /&gt;
       bne petla&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;n&amp;#039; to, jak powyżej, wielkość &amp;#039;&amp;#039;zmiennej&amp;#039;&amp;#039; w bajtach. Dla liczby trzybajtowej zysk wynosi 5 bajtów, a dla czterobajtowej - aż 13. Jak powyżej, jeśli &amp;#039;&amp;#039;zmienna&amp;#039;&amp;#039; jest na stronie zerowej, pętlę trzeba odpowiednio zmodyfikować.&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>