Article View: pl.comp.lang.asm
Article #2245Re: moja zagadka
From: Wojciech Muła
Date: Mon, 10 May 2010 21:06
Date: Mon, 10 May 2010 21:06
44 lines
2196 bytes
2196 bytes
"identifikator: 20040501" <NOSPAMtestowanije@go2.pl> wrote:
> > Te znaki co mają reprezentować? Zapis szesnastkowy, dwójkowy, dziesiętny
> > liczby?
>
> cyferki dziesiętne, już w problem zamiany cyferek na znaki sobie darujmy...
> oczywiście można pomyśleć o algorytmie uniwersalnym, coby na przykład
> wyliczał cyferki w kodzie piątkowym...
> albo na cyfrach rzymskich...
Problem konwersji sprowadza się w zasadzie do obliczenia:
do {
cyfra := x mod podstawa
zapis cyfry
x := x div podstawa
} while (x > 0)
Dzielenie jest ogólnie wolne, ale skoro podstawa jest stała, można użyć mnożenia
przez specjalnie dobrane liczby, a resztę liczyć w standardowy sposób, tj.
x - ((x div podstawa) * podstawa). Jeśli podstawa jest równa 10, wówczas:
mov ebx, 0xcccccccd ; magiczna liczba
mov eax, [x]
loop:
xor edx, edx
mov eax, ecx ; zapisanie x
mul eax
shr edx, 3 ; edx = eax div 10
mov eax, edx ; zapis nowej wart. x' do następnej iteracji
add edx, edx
lea edx, [edx + edx*4] ; edx = edx * 10
sub ecx, edx ; ecx = x mod 10
; zapis cl
test eax, eax
jnz loop
To tak pi*drzwi, nie testowane. Warto poszukać w sieci informacji
o współczesnych optymalizacjach kompilatorów.
w.
Technical Details
Message-ID:
<20100510230603.74d5ff46.wojciech_mula@poczta.null.onet.pl.invalid>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mailReferences:
<hs6oc9$ngl$1@mx1.internetia.pl> <20100510163100.526c8fd1.wojciech_mula@poczta.null.onet.pl.invalid> <hs9i5q$qkh$1@mx1.internetia.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mail From: Wojciech Muła <wojciech_mula@poczta.null.onet.pl.invalid> Newsgroups: pl.comp.lang.asm Subject: Re: moja zagadka Date: Mon, 10 May 2010 23:06:03 +0200 Organization: http://onet.pl Lines: 50 Message-ID: <20100510230603.74d5ff46.wojciech_mula@poczta.null.onet.pl.invalid> References: <hs6oc9$ngl$1@mx1.internetia.pl> <20100510163100.526c8fd1.wojciech_mula@poczta.null.onet.pl.invalid> <hs9i5q$qkh$1@mx1.internetia.pl> NNTP-Posting-Host: public-gprs55900.centertel.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1273525575 18070 91.94.91.20 (10 May 2010 21:06:15 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Mon, 10 May 2010 21:06:15 +0000 (UTC) X-Newsreader: Sylpheed 2.5.0 (GTK+ 2.10.14; i686-pc-mingw32) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit