Si, serve.
Ovviamente il suo utilizzo e' molto di
nicchia.
Fondamentalmente, non scrivi un'intero programma in assembler, ma al piu' una piccola libreria dedicata ad una specifica funzionalita'.
Che ne so:
compressione
crittografia
conversione audio/video/immagini
implementazione di funzioni speciali: FFT, numeri in precisione arbitraria, ...
Ad esempio, i dischi esterni USB che hanno la crittografia integrata, il software e' stato scritto direttamente in assembler.
Poi, tutto il resto lo fai in C/C++ oppure altri in linguaggi, piu' ad alto livello, come C#, Java, Haskell, Prolog, Lisp, ...
Spesso la cosa e' anche piu' arzigogolata:
dove serve efficienza, in assembler
la routine in assembler viene
wrappata in C e messa in una DLL/SO
chi la usa puo' essere scritto in qualunque altro linguaggio.
Se ci pensi, in un'applicazione non vi sono poi tanti posti in cui serve un'estrema efficenza. L'interfaccia utente scritta in assembler non ha molto senso. O un'applicazione Web.
Se vai a spulciare l'assembler degli ultimi processori Intel, trovi documentazione sulle estensioni MMX, SSE, VXT, ...
https://software.intel.com/sites/landingpage/IntrinsicsGuide/
Per usare queste estensioni, spesso devi usare l'assembler.
E puoi ottenere miglioramenti nelle performance anche del 500/1000%.
Un'applicazione che ti gira 5/10 volte piu' veloce non fa schifo a nessuno
https://software.intel.com/en-us/articles/using-intel-streaming-simd-extensions-and-intel-integrated-performance-primitives-to-accelerate-algorithms