esto es programacion para PC, creo que te has confundido de apartado

como tu dices deberia ser asi, ya que la 2ª instruccion reemplaza lo que se haya escrito en la 1ª, de todas formas hacer un desplazamiento de bits para configurar un registro lo veo una tonteria, mas que nada porque el desplazamiento de bits ocupa recursos, son unas cuantas instrucciones, y es mas facil poner CLKPR=0b11000100 (con el codigo binario deseado), o bien en HEX, DEC...
Para lo que tarda cada instruccion en ASM se puede saber, en C no, bueno si pero no a ciencia cierta, o una de dos, o miras el codigo en ASM y asi cuentas cuantas instrucciones tiene cada funcion, o bien usas un emulador tipo proteus-isis que te dice cuanto tarda de instruccion a instruccion.
El caso es que las instrucciones no siempre tardan igual, no es igual un if(char que un if(int o un if (*char....
la funcion switch lo que hace es comparar la variable con los distintos case, en el caso que coincidan pega un salto a la direccion donde esta el case. Entre mas case mas tardara, pero tienes que tener en cuenta que no es igual el case ULTIMO que case PRIMERO que solo tardaria una comparacion y salto.
Yo no me complicaria comprobando tiempos de instrucciones a no ser que sea un proyecto que necesite mucha resolucion.