🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Odejmowanie dużych liczb

#2568
From: Kamil
Date: Fri, 06 Sep 2013 21:54
54 lines
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-mail
References: <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