🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: moja zagadka

#2249
From: yesma
Date: Fri, 16 Jul 2010 17:38
52 lines
2471 bytes
identifikator: 20040501 pisze:
> Przeczytaj np. to "Division by Invariant Integers using Multiplication",
> metody tam opisane są stosowane w gcc.
> 
> nie da rady, to kosmiczny angielski, ja wymiękam,
> może Ktoś by się zlitował i mi napisał o co chodzi z tym mnożeniem?
> 

Mogę Ci podać przykład ale jak to dokładnie działa nie wiem
wiem tylko że kluczowe są tu magic_numbers
gdzieś je znalazłem . Jak liczba np bajtowa jest podzielna przez 5
to magic jest 0xcd dwubajtowa 0xcccd,
sprawdziłem dla dzielenia przez 10 i działa.
Tyle że jak spawdzałem dla podzielnej przez 2 to mi coś nie wyszło
oczywiście z innym magic,
tutaj masz działający przykład

; mnozenie zamiast dzielenia przez 10,
;word liczba na ascii dziesiętnie

	mov cx, 0xcccd
	ror ecx,16	;ror bo będę w ecx trzymał
			;dwie liczby dwubajtowe
	mov ax,12345	;tą liczbę wyświetlimy w konsoli w ascii
	xor rbx,rbx
.loop:
	shl rbx,8	;do rbx ładuje liczbę dziesiętną w ascii
			;zamiast rbx możesz użyć pamięci
	xor dx,dx
	mov cx,ax
	ror ecx,16
	mul cx
	ror ecx,16
	shr dx,3
	mov ax,dx
	shl dx,1
	ror eax,16	;w eax też dwie dwubajtowe liczby
	mov ax,dx
	shl dx,2
	add dx,ax
	sub cx,dx
	ror eax,16
	or cl,30h
	mov bl,cl
	test ax,ax
	jnz .loop

	mov [char],rbx
	sys_write 1,char,8

Regards - Grzechu
Linux x86_64
Technical Details
Message-ID: <i1q5fo$b88$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.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><20100510230603.74d5ff46.wojciech_mula@poczta.null.onet.pl.invalid><hsbv6n$mhi$1@mx1.internetia.pl> <20100511214444.fa4a4873.wojciech_mula@poczta.null.onet.pl.invalid> <i1q1s3$n11$1@mx1.internetia.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: yesma <yesma@false.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: moja zagadka
Date: Fri, 16 Jul 2010 19:38:15 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 52
Message-ID: <i1q5fo$b88$1@inews.gazeta.pl>
References: <hs6oc9$ngl$1@mx1.internetia.pl><20100510163100.526c8fd1.wojciech_mula@poczta.null.onet.pl.invalid><hs9i5q$qkh$1@mx1.internetia.pl><20100510230603.74d5ff46.wojciech_mula@poczta.null.onet.pl.invalid><hsbv6n$mhi$1@mx1.internetia.pl> <20100511214444.fa4a4873.wojciech_mula@poczta.null.onet.pl.invalid> <i1q1s3$n11$1@mx1.internetia.pl>
Reply-To: yesma@false.pl
NNTP-Posting-Host: user14-095.satfilm.net.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1279301944 11528 77.91.14.95 (16 Jul 2010 17:39:04 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Fri, 16 Jul 2010 17:39:04 +0000 (UTC)
X-User: yesma
User-Agent: Mozilla-Thunderbird 2.0.0.24 (X11/20100329)
In-Reply-To: <i1q1s3$n11$1@mx1.internetia.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit