Although assembly language is much more difficult to program in, it runs much faster and takes up less storage space. You would generally use it if you need something to happen very very quickly, like in a safety system, or if you need it to run on something that doesn't have much storage space, like a microwave. You can also use it to write your own programming language. If you were working with some very specialised hardware, it might not be able to run anything made in a normal high level programming language, so you'd need to write assembly code to tell it what to do.