> > >Rotating both bytes together like that is a common technique, and I've seen > >it used frequently, but it's almost always better to use a routine to shift > >out eight bits at a time > > I won't presume to argue with you (my degree is in biology and I'm sure you > know more about what you're talking about than I do), but I would like to > know why you make this argument. What difference does it make? I'm sorry if I sounded too pedantic; in cases where execution speed is not an issue, a multi-byte shift seems fine. Unfortunately, many people who get used to doing multi-byte shifts in non-time-critical things sometimes end up doing them in more time-sensitive things (such as multi-precision multipli- cation or division) and I wanted to ensure that people were well aware that multi-byte shifts are often not the best idea. (Actually, I must [sheepishly] admit that if one is complying with the port timing requirement of leaving a cycle between operations on different bits, doing a double-shift imposes only a little extra cost if done in a once-unrolled loop: ShiftEm: bsf NumBits,3 ; Assumes NumBits was zero Loopy: bcf DATA btfss Byte1,7 bsf DATA rlf Byte0 bsf CLOCK bcf CLOCK rlf Byte1 bcf DATA btfss Byte1,7 bsf DATA rlf Byte0 rlf Byte1 bsf CLOCK bcf CLOCK decfsz NumBits goto Loopy