Article View: pl.comp.lang.asm
Article #2568Re: Odejmowanie dużych liczb
From: Kamil
Date: Fri, 06 Sep 2013 21:54
Date: Fri, 06 Sep 2013 21:54
54 lines
2509 bytes
2509 bytes
Użytkownik "Bogdan (bogdro)" napisał:
>> Ta procedura działa błędnie dla niektórych danych wejściowych.
> Czym otrzymany wynik różni się od oczekiwanego?
Dla np. 633825300114114700748351602688 wynik dzielenia wynosi
554597137599850363154807652352
>> Pryczyny nie znalazłem. Może komuś uda się znaleźć błąd?
> Bez definicji "pam" może być trudno to zinterpretować.
Przepraszam za przeoczenie. "pam" equ dword ptr
>> mov eax, pam [esi+4]
>> sbb eax, pam [edi+4]
>> mov pam [ebx+4], eax
>>
>> jc arg1_mniejszy_od_arg2
>>
>> add esi, 4
>> add edi, 4
>> add ebx, 4
>> loop odejmujemy
> Wiesz, że odejmujesz 21 "czwórek", prawda? ECX = 20, ale pozycję [0]
> obsługujesz przed pętlą, a w pętli obsługujesz pozycje [4], [8], [12],
> ..., [80], czyli łącznie bajty na offsetach od 0 do 83 włącznie.
To akurat jest jasne. Wydaje się, że jeden błąd znalazłem. Otóż jeśli po sbb
zostanie ustawiona flaga to linijki
add esi, 4
add edi, 4
add ebx, 4
ją skasują. Ma być tak:
pushf
add esi, 4
add edi, 4
add ebx, 4
popf
Okazuje się, że "skaracanie" tekstu źródłowego procedur jest ryzykowne.
Lepiej stosować je w pełnym rozwinięciu wg. Twoich tutoriali. Wtedy nie ma
problemów.
Pozdrawiam
Technical Details
Message-ID:
<522a4f34$0$1219$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!news.unit0.net!news.glorb.com!newspump.sol.net!news-out.readnews.com!transit3.readnews.com!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> <52297086$0$1468$65785112@news.neostrada.pl> <522a1288$0$1452$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!news.unit0.net!news.glorb.com!newspump.sol.net!news-out.readnews.com!transit3.readnews.com!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 From: "Kamil" <nospam@tlen.pl> Newsgroups: pl.comp.lang.asm References: <52293698$0$1261$65785112@news.neostrada.pl> <52297086$0$1468$65785112@news.neostrada.pl> <522a1288$0$1452$65785112@news.neostrada.pl> Subject: Re: Odejmowanie dużych liczb Date: Fri, 6 Sep 2013 23:54:42 +0200 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Lines: 57 Message-ID: <522a4f34$0$1219$65785112@news.neostrada.pl> Organization: Telekomunikacja Polska NNTP-Posting-Host: 83.29.204.230 X-Trace: 1378504500 unt-rea-b-01.news.neostrada.pl 1219 83.29.204.230:2237 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit