I am using a 12bit binary number to represent the boolean state and position of twelve flags.
I want to be able to rotate with no carry the position of these bits in left or right direction. So basically if the pattern gets shifted off either end of the 12bits it is wrapped around to the other side.
lloyddean has the right idea. There are probably a couple of things that you could do to speed it up with assembly, but in general it's probably not worth it. The difference on a 16bit shift (where C would have trouble using the carry status bit) would probably be more significant.
(Hmm. There are a number of interesting ways to do this in assembler, and there would be some savings by being able to treat the bytes separately for the boolean logic. But not lots. And it would depend somewhat on whether you want to use more space to get faster execution.)