<?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=Por%C3%B3wnywanie_liczb_wielobajtowych</id>
	<title>Porównywanie 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=Por%C3%B3wnywanie_liczb_wielobajtowych"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Por%C3%B3wnywanie_liczb_wielobajtowych&amp;action=history"/>
	<updated>2026-10-04T21:44:58Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Por%C3%B3wnywanie_liczb_wielobajtowych&amp;diff=3248&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=Por%C3%B3wnywanie_liczb_wielobajtowych&amp;diff=3248&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;== Zero ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda data&lt;br /&gt;
  ora data+1&lt;br /&gt;
  ...&lt;br /&gt;
  ora data+N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Znacznik Z=1 oznacza, że liczba jest równa 0.&lt;br /&gt;
Ta metoda działa również w przypadku liczb BCD (nie wymaga wcześniejszego ustawienia bitu D).&lt;br /&gt;
&lt;br /&gt;
== MAX ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda data&lt;br /&gt;
  and data+1&lt;br /&gt;
  ...&lt;br /&gt;
  and data+N&lt;br /&gt;
  eor #$FF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Znacznik Z=1 oznacza, że liczba jest równa $FF..FF.&lt;br /&gt;
&lt;br /&gt;
Zmieniając&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  eor #$FF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
na&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  eor #$99&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
można również testować czy liczba BCD jest równa 99..99 (nie wymaga wcześniejszego ustawienia bitu D).&lt;br /&gt;
&lt;br /&gt;
Metoda nie modyfikuje znacznika C.&lt;br /&gt;
&lt;br /&gt;
== Zgodność znaków liczb U2 ==&lt;br /&gt;
&lt;br /&gt;
Test polega na sprawdzeniu MSB argumentów:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda dataA+N&lt;br /&gt;
  eor dataB+N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* N=0 - znaki zgodne&lt;br /&gt;
* N=1 - znaki różne&lt;br /&gt;
&lt;br /&gt;
== A=B ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda dataA&lt;br /&gt;
  cmp dataB&lt;br /&gt;
  bne rozne&lt;br /&gt;
  lda dataA+1&lt;br /&gt;
  cmp dataB+1&lt;br /&gt;
  bne rozne&lt;br /&gt;
  ...&lt;br /&gt;
  lda dataA+N&lt;br /&gt;
  cmp dataB+N&lt;br /&gt;
  bne rozne&lt;br /&gt;
rowne:&lt;br /&gt;
  ...&lt;br /&gt;
rozne:&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda dataA&lt;br /&gt;
  eor dataB&lt;br /&gt;
  bne rozne&lt;br /&gt;
  lda dataA+1&lt;br /&gt;
  eor dataB+1&lt;br /&gt;
  bne rozne&lt;br /&gt;
  ...&lt;br /&gt;
  lda dataA+N&lt;br /&gt;
  eor dataB+N&lt;br /&gt;
  bne rozne&lt;br /&gt;
rowne:&lt;br /&gt;
  ...&lt;br /&gt;
rozne:&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Działa też dla liczb U2 i BCD (nie wymaga wcześniejszego ustawienia bitu D). Ostatnia wersja nie modyfikuje znacznika C.&lt;br /&gt;
&lt;br /&gt;
Wykorzystując zmienną roboczą:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda dataA&lt;br /&gt;
  eor dataB&lt;br /&gt;
  sta temp&lt;br /&gt;
  lda dataA+1&lt;br /&gt;
  eor dataB+1&lt;br /&gt;
  ora temp&lt;br /&gt;
  sta temp&lt;br /&gt;
  ...&lt;br /&gt;
  lda dataA+N&lt;br /&gt;
  eor dataB+N&lt;br /&gt;
  ora temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Znacznik Z odpowiada za relacje = i &amp;lt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Z=1 - A = B&lt;br /&gt;
* Z=0 - A &amp;lt;&amp;gt; B&lt;br /&gt;
&lt;br /&gt;
Metoda nie modyfikuje znacznika C. Nadaje się do porównywania liczb BCD i U2.&lt;br /&gt;
&lt;br /&gt;
== A ? B ==&lt;br /&gt;
&lt;br /&gt;
Tradycyjna metoda porównywania liczb wielobajtowych&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda dataA&lt;br /&gt;
  cmp dataB&lt;br /&gt;
  lda dataA+1&lt;br /&gt;
  sbc dataB+1&lt;br /&gt;
  ...&lt;br /&gt;
  lda dataA+N&lt;br /&gt;
  sbc dataB+N&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pozwala na testowanie wyłącznie relacji &amp;lt; i &amp;gt;=:&lt;br /&gt;
&lt;br /&gt;
* C=0 - A &amp;lt; B&lt;br /&gt;
* C=1 - A &amp;gt;= B&lt;br /&gt;
&lt;br /&gt;
Porównując liczby od najstarszego bajtu można dokonać testu relacji &amp;lt;, =, &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  lda dataA+N&lt;br /&gt;
  cmp dataB+N&lt;br /&gt;
  bcc mniejsze&lt;br /&gt;
  bne wieksze&lt;br /&gt;
  lda dataA+N-1&lt;br /&gt;
  cmp dataB+N-1&lt;br /&gt;
  bcc mniejsze&lt;br /&gt;
  bne wieksze&lt;br /&gt;
  ...&lt;br /&gt;
  lda dataA&lt;br /&gt;
  cmp dataB&lt;br /&gt;
  bcc mniejsze&lt;br /&gt;
  bne wieksze&lt;br /&gt;
rowne:&lt;br /&gt;
  ...&lt;br /&gt;
wieksze:&lt;br /&gt;
  ...&lt;br /&gt;
mniejsze:&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Działa dla BCD (nie wymaga wcześniejszego ustawienia bitu D).&lt;br /&gt;
&lt;br /&gt;
Wykorzystując zmienną roboczą można testować relacje &amp;lt;. =, &amp;gt;=, &amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  sec&lt;br /&gt;
  lda dataA&lt;br /&gt;
  sbc dataB&lt;br /&gt;
  sta temp&lt;br /&gt;
  lda dataA+1&lt;br /&gt;
  sbc dataB+1&lt;br /&gt;
  ora temp&lt;br /&gt;
  sta temp&lt;br /&gt;
  ...&lt;br /&gt;
  lda dataA+N&lt;br /&gt;
  sbc dataB+N&lt;br /&gt;
  ora temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Znaczniki Z i C odpowiadają za relacje:&lt;br /&gt;
&lt;br /&gt;
* C=0 - A &amp;lt; B,&lt;br /&gt;
* Z=1 - A = B,&lt;br /&gt;
* C=1 - A &amp;gt;= B,&lt;br /&gt;
* C=1 przy uprzednim wykluczeniu Z=1 - A &amp;gt; B.&lt;br /&gt;
&lt;br /&gt;
Dodatkowo znacznik V odpowiada za przepełnienie przy porównywaniu liczb U2.&lt;br /&gt;
Ta metoda nadaje się do porównań liczb BCD (wymaga wcześniejszego ustawienia bitu D).&lt;br /&gt;
&lt;br /&gt;
Zamieniając miejscami argumenty można testować relacje &amp;gt;, =, &amp;lt;=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  sec&lt;br /&gt;
  lda dataB&lt;br /&gt;
  sbc dataA&lt;br /&gt;
  sta temp&lt;br /&gt;
  lda dataB+1&lt;br /&gt;
  sbc dataA+1&lt;br /&gt;
  ora temp&lt;br /&gt;
  sta temp&lt;br /&gt;
  ...&lt;br /&gt;
  lda dataB+N&lt;br /&gt;
  sbc dataA+N&lt;br /&gt;
  ora temp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gdzie analogicznie:&lt;br /&gt;
&lt;br /&gt;
* C=0 - A &amp;gt; B,&lt;br /&gt;
* Z=1 - A = B,&lt;br /&gt;
* C=1 - A &amp;lt;= B,&lt;br /&gt;
* C=1 przy uprzednim wykluczeniu Z=1 - A &amp;lt; B.&lt;br /&gt;
&lt;br /&gt;
Znacznik V odpowiada za przepełnienie przy porównywaniu liczb U2.&lt;br /&gt;
Ta metoda również nadaje się do porównań liczb BCD (wymaga wcześniejszego ustawienia bitu D).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;UWAGA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
W dwóch ostatnich przypadkach znacznik N ulega zniszczeniu przy ostatnim ORA TEMP, więc w przypadku porównywania liczb U2 można test na N wykonać wcześniej.&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>