Re: C -- I agree. It's the only widespread language that really matters for this.
Re: Assembly -- I disagree. With the increasing popularity of heterogenous multi-processor systems (cpu + specialized processors like GPUs, etc.) learning languages that are more constrained to the hardware is still valuable/important.
Also, note that building specialized code generators (be they stand along or embedded DSLs) to the assembly language can give you a nice payoff.