The major disadvantage of assembly language is that it is different for each processor that you use. Therefore there is a big learning curve whenever you change processor.
Clearly, if you only ever plan on using a single processor (or family of processors) then this is less of an issue; however, life is rarely that simple.
Equally, assembler allows you to really get things wrong, unless you are very careful. I speak as someone with lots of years commercial experience writing flight-critical assembly code!!
On the other hand, pretty much every processor comes with a suitable C compiler (as @Shahbaz suggests) and porting C from one processor to another is a lot more straightforward than porting assembler.
Unless you already have good assembler experience, I'd be minded to learn C, and leave assembly language for those (very rare) occurrences when C just isn't up for it.
As for which processor... how long is your piece of string?