Article View: pl.comp.lang.asm
Article #2569Re: Odejmowanie dużych liczb
From: Bogdan (bogdro)
Date: Fri, 06 Sep 2013 17:29
Date: Fri, 06 Sep 2013 17:29
109 lines
4058 bytes
4058 bytes
W dniu 06.09.2013 03:57, Kamil pisze: > Witam > > Na stronie Bogdana jest min. procedura odejmowania: > > > mov eax, [arg1] > sub eax, [arg2] ; odejmujemy 2 pierwsze części > mov [wynik], eax ; i zapisujemy wynik > ; flaga CF mówi, czy była pożyczka > > mov eax, [arg1+4] > sbb eax, [arg2+4] ; odejmujemy razem z pożyczk? (CF), > ; jeśli w poprzednim odejmowaniu > ; musieli?my co? pożyczać > > mov [wynik+4], eax ; wynik: [arg1+4]-[arg2+4]-pożyczka > ; z pierwszego odejmowania > ; CF teraz zawiera pożyczkę z SBB > ; podobnie reszta działania: > > mov eax, [arg1+8] > sbb eax, [arg2+8] > mov [wynik+8], eax > > mov eax, [arg1+12] > sbb eax, [arg2+12] > mov [wynik+12], eax > > jc arg1_mniejszy_od_arg2 > > Moja implementacja wygląda tak: > > odejmij PROC > > push esi > push edi > push ebx > push ebp > > > mov eax, [arg1] > sub eax, [arg2] ; odejmujemy 2 pierwsze części > mov [wynik], eax ; i zapisujemy wynik > ; flaga CF mówi, czy była pożyczka > > mov eax, [arg1+4] > sbb eax, [arg2+4] ; odejmujemy razem z pożyczk? (CF), > ; jeśli w poprzednim odejmowaniu > ; musieli?my co? pożyczać > > mov [wynik+4], eax ; wynik: [arg1+4]-[arg2+4]-pożyczka > ; z pierwszego odejmowania > ; CF teraz zawiera pożyczkę z SBB > ; podobnie reszta działania: > > mov eax, [arg1+8] > sbb eax, [arg2+8] > mov [wynik+8], eax > > mov eax, [arg1+12] > sbb eax, [arg2+12] > mov [wynik+12], eax > > jc arg1_mniejszy_od_arg2 > > arg1_mniejszy_od_arg2: > > pop ebp > pop ebx > pop edi > pop esi > > ret > > odejmij endp > > mam następujące pytania: > > - Co sie stanie w razie wystąpienia sytuacji spełniącej warunek skoku jc? Nic. To jest "informacja dla autora", że gdyby chciał tę sytuację obsłużyć, to może zrobić to w ten sposób. > Czy linia mov [wynik+12], eax się wykona? Tak, bo jest przed skokiem. > Jaki będzie wynik? Ten sam. Konkretnie - ujemny. > - co się stanie kiedy już w peerwszych argumentach będzie arg1 < arg2 Nic. Liczby będą się dalej odejmować, tylko flaga CF będzie gdzieniegdzie ustawiona. > - cfzy jc nie powinno być po każdym odejmowaniu? Nie. Sytuacja ustawienia flagi CF jest obsługiwana przez zastosowanie instrukcji SBB (odejmowanie "z pożyczką") zamiast SUB, czyli zwykłego odejmowania. -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.Xiph.org www.TorProject.org Soft(EN): tinyurl.com/bogdro-soft
Technical Details
Message-ID:
<522a10fd$0$1268$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!goblin2!goblin.stu.neva.ru!feeder1.cambriumusenet.nl!feed.tweaknews.nl!209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<52293698$0$1261$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!goblin2!goblin.stu.neva.ru!feeder1.cambriumusenet.nl!feed.tweaknews.nl!209.197.12.246.MISMATCH!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail Date: Fri, 06 Sep 2013 19:29:28 +0200 From: "Bogdan (bogdro)" <bogdan@poczta.gazeta.pl> User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 Newsgroups: pl.comp.lang.asm Subject: Re: Odejmowanie dużych liczb References: <52293698$0$1261$65785112@news.neostrada.pl> In-Reply-To: <52293698$0$1261$65785112@news.neostrada.pl> Lines: 109 Message-ID: <522a10fd$0$1268$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: rudy.mif.pg.gda.pl X-Trace: 1378488574 unt-rea-a-02.news.neostrada.pl 1268 153.19.42.16:33885 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit