🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #347

Re: Flagi

#347
From: Bogdan (bogdro)
Date: Fri, 16 Jun 2006 15:47
45 lines
2735 bytes
Johnny napisał(a):
> Nie mam chyba szczęścia do opisu flag - mam problem z dwoma: carry i
> overflow. Czytam, że carry odnosi się do operacji arytmetycznych bez
> znaku a overflow do operacji ze znakiem.
> 
> Wprowadzam coś takiego:
> sub ah,80
> i ustawiają się oba znaczniki naraz.
> 
> Czy ktoś mógłby (najlepiej na przykładach) wytłumaczyć kiedy każdy z
> tych znaczników się zmienia; co to znaczy operacja arytmetyczna ze
> znakiem i bez, czy to oznacza że najwyższy bit jednego z argumentów jest
> ustawiony?

 Działając na liczbach 8-bitowych:

 -120 - 30 = -150 < -128 => ustawi OF
 120 + 20 = 140 > 127 => ustawi OF
 250 + 20 = 270 > 255 => ustawi CF
 30 - 40 = -10 => ustawi CF

 Jeśli działanie "przebija" od dołu -128 lub od góry 127, ustawiana
jest OF.

 Jeśli działanie "przebija" od dołu 0 lub od góry 255, ustawiana jest CF.

 Tzw. "ze znakiem" czy "bez znaku" to nie tyle sama operacja, co
interpretacja jej wyników. Liczby 8-bitowe traktowane jako bez znaku
to 0, 1, ..., 255, a ze znakiem: -128, -127, ..., +127.

 Jeśli pierwszy mój przykład traktować jako bez znaku, to mamy: +135 -
30 = 105. Nie nastąpiło przebicie 255 ani 0, więc CF=0.
 W drugim przykładzie: 120+20 = 140, też nie pzrebija, też CF=0.
 W trzecim, traktowanym jak ze znakiem: -6 + 20 = +14, nie przebija
-128 ani +127, więc OF=0.
 W czwartym: 30-40=-10, też nie przebija, też OF=0.

 Działanie "127+200" ustawi obie flagi (wynik przebija i 127 i 255 w
górę), podobnie "1-200" (wynik przebija i -128 i 0 w dół).

-- 
Pozdrawiam, Bogdan                                  (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org
Technical Details
Message-ID: <e6ujvk$jpb$1@nemesis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <e6ubo4$4c7$1@nemesis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@bogdan.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Flagi
Date: Fri, 16 Jun 2006 17:47:57 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 45
Message-ID: <e6ujvk$jpb$1@nemesis.news.tpi.pl>
References: <e6ubo4$4c7$1@nemesis.news.tpi.pl>
NNTP-Posting-Host: actw241.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1150473012 20267 83.11.76.241 (16 Jun 2006 15:50:12 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Fri, 16 Jun 2006 15:50:12 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.4 (X11/20060516)
In-Reply-To: <e6ubo4$4c7$1@nemesis.news.tpi.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit