Alguns dispositivos precisavam de inicialização ou comandos específicos em assembly, como por exemplo uma memória EEPROM que requer que você puxe uma sequência de bytes pra um registrador ou área da memória específica.
Quando você compila o seu programa em C, o compilador determina a sequência de opcodes do assembly gerado, o que pode não bater com o que você precisa. Por isso algumas implementações são feitas na mão.
Se você procurar pela keyword "asm" em C, vai ver trechos de códigos que fazem isso. Esse é o famoso inline assembly.