🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: moja zagadka

#2251
From: yesma
Date: Sat, 17 Jul 2010 13:42
55 lines
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: <i1sc2d$2sr$4@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: Sat, 17 Jul 2010 15:42:51 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 55
Message-ID: <i1sc2d$2sr$4@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 1279374222 2971 77.91.14.95 (17 Jul 2010 13:43:42 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Sat, 17 Jul 2010 13:43:42 +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