🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: moja zagadka

#2245
From: Wojciech Muła
Date: Mon, 10 May 2010 21:06
44 lines
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-mail
References: <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