🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Konwersja dużych liczb

#2557
From: Kamil
Date: Tue, 10 Sep 2013 10:22
54 lines
2768 bytes
Użytkownik "Bogdan (bogdro)" napisał:

> Wszystko się zgadza. Przed ostatnim znakiem mnożysz ostatni raz
> liczbę przez 10, po czym dodajesz ten ostatni znak.

Dzięki Tobie przeanalizowałem jeszcze raz procedurę. Przyjrzałem się 
dokładnie poniższej procedurce:

[code]

pobieraj:
 mov bl, [esi]
 cmp bl, 0
 jz  _do_ret
 cmp bl, 20h
 jz pomin
 cmp bl, 40h
 ja _blad1
 cmp bl, 30h
 jb _blad1
 sub bl, 30h
 mul ecx   ; wynik jest w eax
 jc  _blad2
 add eax, ebx
[/code]

Bardzo zręczne rozwiązanie. Pierwsze mnożenie jest "puste". Dzięki temu 
ostatni znak nie jest mnożony. Z tego wzorca korzystłem tworząć iterację 
wielokrotnej precyzji. Wszystko było dobrze z małymi wyjątkami:

 pushf
 add esi, 4
 add edi, 4
 popf

O czym juz chyba wspomniałem. Brakowało odtworzenia flag w iteracji. Jednak 
w dalszym ciągu były błędy dla niektórych danych wejściowych. Sprawa okazała 
sie banalna. Było:

 add dword ptr [esi], ebx
 adc dword ptr [esi+4], 0
 adc dword ptr [esi+8], 0

zmieniłem na:

 add dword ptr [esi], ebx
 adc dword ptr [esi+4], 0
 adc dword ptr [esi+8], 0
 adc dword ptr [esi+12], 0

Można się załamać szukając tak prostej przyczyny. Czy teraz jest już 
wystarczająca ilość adc? Ile ich powinno być, aby być całkowicie pewnym?

Pozdrawiam i serdecznie dziękuję za pomoc.
Technical Details
Message-ID: <522ef313$0$1261$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder.erje.net!us.feeder.erje.net!usenet.blueworldhosting.com!feeder02.blueworldhosting.com!news.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <52239cda$0$1225$65785112@news.neostrada.pl> <522a0fcd$0$1459$65785112@news.neostrada.pl> <522a4a2c$0$1268$65785112@news.neostrada.pl> <522b5a7a$0$1263$65785112@news.neostrada.pl> <522c61b4$0$1470$65785112@news.neostrada.pl> <522dfbe2$0$1267$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!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!feeder.erje.net!us.feeder.erje.net!usenet.blueworldhosting.com!feeder02.blueworldhosting.com!news.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
From: "Kamil" <nospam@tlen.pl>
Newsgroups: pl.comp.lang.asm
References: <52239cda$0$1225$65785112@news.neostrada.pl> <522a0fcd$0$1459$65785112@news.neostrada.pl> <522a4a2c$0$1268$65785112@news.neostrada.pl> <522b5a7a$0$1263$65785112@news.neostrada.pl> <522c61b4$0$1470$65785112@news.neostrada.pl> <522dfbe2$0$1267$65785112@news.neostrada.pl>
Subject: Re: Konwersja dużych liczb
Date: Tue, 10 Sep 2013 12:22:33 +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: 58
Message-ID: <522ef313$0$1261$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.7.27.147
X-Trace: 1378808595 unt-rea-a-02.news.neostrada.pl 1261 83.7.27.147:1640
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit