Re: A86: ASM Programming Test - div 3
[Prev][Next][Index][Thread]
Re: A86: ASM Programming Test - div 3
Hmm, that's intersting. The problem with all of this is that the z80 can't
do multiple shifts at once, so you'd be better off using a loop anyway.
-----Original Message-----
From: Nuno Joao <nmasj@camoes.rnl.ist.utl.pt>
To: assembly-86@lists.ticalc.org <assembly-86@lists.ticalc.org>
Date: Wednesday, December 09, 1998 5:44 PM
Subject: Re: A86: ASM Programming Test - div 3
>
>David Phillips wrote:
>>
>> I spent about a day trying to figure this out. It's not possible. To
>> divide by shifting requires at least a 16 or 32 bit fixed-point number,
and
>> it still comes out a little too bit too small (reference: "More Tricks of
>> the Game Programming Gurus"). For example, to divide x by 3 in C (the
">>"
>> operator means shift right N places...same as the assembler uses):
>>
>> x_div_3 = (x >> 2) + (x >> 4) + (x >> 6) + (x >> 8)
>
> Try
>
>> x_div_3 = (x >> 2) + (x >> 4) + (x >> 6) + (x >> 8) + R >> 2
>
> R = (x & 3) + ((x & 15) >> 2), or
> R = (x & 3) + ((x & 15) >> 2) + ((x & 63) >> 3), or
> R = (x & 3) + ((x & 15) >> 2) + ((x & 63) >> 3) + (x >> 6)
>
> to see if the result gets better.
>
> NSJ aka Viriato
> l41324@alfa.ist.utl.pt
> nmasj@camoes.rnl.ist.utl.pt
> http://camoes.rnl.ist.utl.pt/~nmasj - DemoAdict/TaradoPorDemos
Follow-Ups: