"assembly is tedious to use." - Pype.Clicker
Actually I find it quite enjoyable, but that's just a personal thing and probably has something to do with having studied digital electronics many moons ago. The boolean algebra/logic of assembly language can feel more natural depending on where you are coming from.
"I have never seen anyone who can write better assembly code than a C compiler, except maybe for 5 lines at a time. Certainly a whole OS written in asm can expect to be worse-optimised than one written in C or C++. " - Tim
I've seen it, but still over a relatively short program and it was targetted at a specific processor. Over any large program there are simply too many things to keep track of to write optimal code (Unless you are
very good).
***
Myth 1:
Assembly language programs run faster than HLL programs
This is misrepresentative. Assembly language programs always have the
potential to run faster than C programs (Because as a last resort you can sneak a peak at the assembled C and improve on it), but the vast majority of programmers do not possess the skill to pull it off. An average assembly language programmer won't be able to beat the compiler over anything but the shortest distance.
Myth 2:
Assembly language programs are difficult to make and debug
This just isn't true. It's a myth propogated by HLL programmers who have seen a few heavily optimised programs and run back to momma. Assembly language is no harder than an HLL so long as you actually use assembly language reguarily. The same goes for debugging. I couldn't debug a common LISP program to save the universe, because I don't know common LISP. The debugging myth comes from people whose strength is in an HLL and occasionally come across, as they see it, deep voodoo assembly language embedded in large programs.
Myth 3:
You can do things in HLL's that you can't do in assembly language
This is untrue. There is nothing, repeat nothing, that you can do in an HLL that you can't do in assembly language. However there are plenty of things you can do in assembly language that you can't do in an HLL. The problem, as Pype touched on, is that some things are just a serious pain in the @$$ to write in assembly (Even worse to write in optimised assembly). On the upside the flexibility of assembly language means that sometimes an assembly language programmer has access to better methods than an HLL programmer, but unless you are Knuth then you will most likely get more bang for your buck by using an HLL.
Myth 4:
Using C makes your code portable
This is one that irritates me. Simply writing your code in C does
NOT make it portable between architectures. It makes porting easier, but it does not magically make your code architecture independent unless you're are programming nothing more taxing than "hello, world". However since if you use assembly language you have to rewrite the entire program rather than porting the existing code to another architecture the HLL wins hands down on code efficiency. On the flip side the algorithmics behind your code will be the same on any architecture, so writing the code for the port will take a far shorter time than the original (Assuming you know both architectures equally well, big assumption

).
Myth 5:
Assembly language programmers get more respect from their peers
This used to be the case, but we're living in a world where even C/C++ programmers get laughed at for persevering with an "outdated" programming language when they could be using whichever incredible OO HLL is flavour of the month. Outside a few niche arenas assembly language programmers get about as much respect as your average train spotter. If the computing community was a house party we'd be drinking cheap wine in the garage, waiting for an invite to the kitchen.
***
I could go on, but I think you get the idea. Writing everything in assembly language is certainly possible, but just not a very efficient way of doing things. It's far better to at least prototype your algorithms in a higher level language, like C, then optimise where required in assembly (If you're confident you can beat the compiler or do something different). You shouldn't write the whole thing in assembly language unless you have some reason, external to the actual program, to do so. I, for example, write in assembly language, but I do so because I enjoy it, not because I have any expectation that I can beat a compiler or because I want kudos for doing it. Unless you get a similar pleasure from some aspect of assembly language programming then I strongly reccomend you look into using your favourite HLL for the bulk of the work.