Hello, I would like to know if there's any way I can write C code that will use the assembly instructions RLC and ACC.x efficiently. I would like to some C code that will result in: MOV A,byBuffer MOV c,bInput RLC A MOV byBuffer,A The closest I could get was this: byBuffer=(byBuffer<<1)&bInput; Which results in: MOV A,byBuffer ADD A,ACC MOV R7,A MOV C,bInput CLR A RLC A ANL A,R7 MOV byBuffer,A The same thing happens when I want to use a specific bit from a byte. I have never seen the C-compiler use the ACC.x instruction. It uses solutions like this: MOV A,R6 MOV R0,AR5 INC R0 SJMP ?C0078 ?C0077: CLR C RLC A ?C0078: DJNZ R0,?C0077 Any ideas ????
First of all, your C code fragment doesn't do what the ASM did. The truly equivalent C fragment would have been:
byBuffer=(byBuffer<<1) | bInput;
MOV A, byBuffer RL A MOV ACC.7, bInput MOV byBuffer, A