Article View: pl.comp.lang.asm
Article #2250Re: moja zagadka
From: yesma
Date: Sat, 17 Jul 2010 13:39
Date: Sat, 17 Jul 2010 13:39
55 lines
2696 bytes
2696 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
które znalazłem tutaj
http://www.thesolver.it/Manuali/Factotum/source/076.htm .
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:
<i1sbs5$2sr$2@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.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><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: Sat, 17 Jul 2010 15:39:03 +0200 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 55 Message-ID: <i1sbs5$2sr$2@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 1279374022 2971 77.91.14.95 (17 Jul 2010 13:40:22 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Sat, 17 Jul 2010 13:40:22 +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