Searching \ for 'Challenge? restoring from byte mask 10000000..0000' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: www.piclist.com/techref/index.htm?key=challenge+restoring
Search entire site for: 'Challenge? restoring from byte mask 10000000..0000'.

Truncated match.
PICList Thread
'Challenge? restoring from byte mask 10000000..0000'
2000\06\07@115621 by Dmitry Kiryashov

flavicon
face
Hi guys.

As I recall we have discussions in the past the situation with numbers 0..7
conversion into 00000001..10000000 byte mask.

Here is reverse task. It is required to convert byte mask back into number.
I suggest that somebody else probably has successfully researched this before.

This is what I've discovered... It takes 12 clocks/words

;       W before -> W after
;       abcdefgh -> 00000ABC
;       10000000 -> 7 = 4+2+1
;       01000000 -> 6 = 4+2+0
;       00100000 -> 5 = 4+0+1
;       00010000 -> 4 = 4+0+0
;       00001000 -> 3 = 0+2+1
;       00000100 -> 2 = 0+2+0
;       00000010 -> 1 = 0+0+1
;       00000001 -> 0 = 0+0+0

       movwf   temp    ;save abcdefgh
       swapf   temp,W  ;efghabcd
       xorwf   temp,F  ;........
       andlw   0xF     ;0000abcd
       skpz
       movlw   4       ;load A=0/4

       btfss   temp,3
       btfsc   temp,2
       iorlw   2       ;add B=0/2

       btfss   temp,3
       btfsc   temp,1
       iorlw   1       ;add C=0/1
                       ;W holds 7..0 of result

WBR Dmitry.

2000\06\11@203519 by Marc

flavicon
face
> This is what I've discovered... It takes 12 clocks/words

You can make it a table-read, and fill the gaps with other sub functions.
Under the presumption that you can make use of any area of 3+ words in size,
this method uses 6 cycles (incl call/ret) and 11 words.

       addwf   pc,f
       (1 wasted word)
       retlw   0
       retlw   1
       (1 wasted word)
       retlw   2
       (3 spare words)
       retlw   3
       (7 spare words)
       retlw   4
       (15 spare words)
       retlw   5
       ...

(I'm a bit rusty in PIC asm, so I hope that I got it all right)

2000\06\16@113005 by Marc

flavicon
face
> This is what I've discovered... It takes 12 clocks/words

You can make it a table-read, and fill the gaps with other sub functions.
Under the presumption that you can make use of any area of 3+ words in size,
this method uses 6 cycles (incl call/ret) and 11 words.

       addwf   pc,f
       (1 wasted word)
       retlw   0
       retlw   1
       (1 wasted word)
       retlw   2
       (3 spare words)
       retlw   3
       (7 spare words)
       retlw   4
       (15 spare words)
       retlw   5
       ...

(I'm a bit rusty in PIC asm, so I hope that I got it all right)

More... (looser matching)
- Last day of these posts
- In 2000 , 2001 only
- Today
- New search...