[A83] Re: Hex to decimal
[Prev][Next][Index][Thread]
[A83] Re: Hex to decimal
RLC shifts all the bits of the register to the left, and the knocked off bit
goes to both the rightmost bit and the carry flag.
RLC: 11001110 -> 10011101 (Carry=1)
ADC is the same as add, but adds an extra 1 if the carry flag is on.
>From: Thomas Lutz <caffeine43@netzero.net>
>Reply-To: assembly-83@lists.ticalc.org
>To: assembly-83@lists.ticalc.org
>Subject: [A83] Re: Hex to decimal
>Date: Mon, 09 Jul 2001 23:11:43 -0400
>
>
>Not to sound stupid, but what exactly do rlc, adc, and daa do? I also
>assume
>the @ sign is a different format than ZiLOG (I label using colon's). My
>code
>seems to work...I just need it for values <19d, but I'd like to understand
>this
>code. Thanks a lot for your help and suggestions.
>-Tom
>
>Kirk Meyer wrote:
>
> > If you actually want to transfer it to a floating point (i.e., OP1),
>then
> > use SetXXOP1. Um, the code you gave doesn't even get to the second half
>of
> > it. To convert into just a register (hex number has to be in the range 0
>to
> > 99), the following should work:
> >
> > ;Input: C = hex
> > ;Output: A = decimal (0-99)
> > ld b,8
> > xor a
> > @loop rlc c
> > adc a,a
> > daa
> > djnz @loop
> > ret
> >
> > This is if you wanted to convert a strictly hex number to decimal (i.e.
>$1F
> > to $31). You need a different routine to convert $14 to 14.
> >
> > -----Original Message-----
> > From: assembly-83-bounce@lists.ticalc.org
> > [mailto:assembly-83-bounce@lists.ticalc.org]On Behalf Of Thomas Lutz
> > Sent: Monday, July 09, 2001 8:53 PM
> > To: assembly-83@lists.ticalc.org
> > Subject: [A83] Re: Hex to decimal
> >
> > Nevermind I figured it out...if anyone has any optimization suggestions
> > feel free...
> > Thanks..
> > -Tom
> >
> > ;******************************
> > ; Hex to decimal routine
> > ;Inputs: A=1 less than number in hex
> > ;C=number in decimal floating points format
> > ;******************************
> > HexToDecimal:
> > ld b,9
> > HexLoop:
> > inc c
> > dec a
> > cp 0
> > ret z ;Return if a=0
> > djnz HexLoop
> > ;c=9 now...increase first four bits, reset last four
> > push af
> > ld a,c
> > and 11110000b
> > add a,10h
> > ld c,a
> > ld b,9
> > pop af
> > jr HexLoop
> >
> > Thomas Lutz wrote:
> >
> > > What kind of code could I use for taking a hex value in the
>accumulator
> > > and transfering it to a real variable in floating point format?
>Thanks.
> > > -Tom
>
>
>
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com