The 8051 family of microcontrollers has a very useful assembly instruction RRC. This instruction rotates carry into the MSB of the given register, shifts that register right by 1, and carry becomes equal to what used to be the LSB of the register.
bit NewCarry; unsigned char Data; NewCarry = Data & 0x01; Data = (Data >> 1); if (Carry){ Data = (Data | 0x80); } Carry = NewCarry;
would be the ability to compile .asm functions inline Whaddayamean "would be"? This ability exists. Guess what: it's even documented. And supported by the IDE. The fact that you don't appear to know that strongly suggests you complain publically before bothering to actually break open the documentation. That's a bad habit. Inline assembly does have some drawbacks, but those are largely inevitable, given the way Keil tools are designed.