Sidro, just a comment, but everything Salem said is quite true, so I personally wouldn't be too hard on him (words like moronic seem a bit harsh). If a pedestrian asks the way to the railway station and you say "that way", knowing that the nearest station is 150km away, you are answering the question they asked, but not helping them. I think salem was just trying to establish that inline asm was really the right tool for what you were doing, and in the balance of probabilities of people in general, it quite possibly isn't.
Salem, I think you're perhaps a little over-harsh on inline assembler too. Although I agree not many people write assembler as well as does a good C-compiler, and of course it's not portable, there are odd occasions where it just seems a good idea (which is presumably why the compiler-writers thought to add it!)
I've used it frequently with my ancient dos-version of pascal, and not because borland did a bad job of writing their compiler.
One example: I'm reading a long binary file containing huge batches of longints in Mac/Motorola byte order, but I'm programming for IBM PC. Therefore I need to do loads of swapping of bytes. Of course I can write that in C or Pascal or anything, and I'll end up with something that turns into a lot of mov instructions, quite efficient.
But worse, I might not want to include several lines of byte swapping in every function that needs to look at these data, so I might write a function that returns the byte-swapped longint. So now every time I need to do this my poor processor has to handle a call (maybe a far call), set up a stack frame, and do a whole batch of movs. But the task could have been accomplished by a single inline bswap. One cycle.
Now the downsides. Lack of portability. True, but my code with the byte-swapping still depended on the byte-order used by the machine, so it wasn't portable anyway! It might have compiled OK on a mac, but it would have produced the wrong answers!
Readability: True, but is bswap so difficult?
Having said that I have also wasted a (big) lot of time writing GUI code in assembler because I started doing low-level graphics in assembler (justifiable) and got carried away, failing to notice the point at which it would have been a very good idea to change to high level language. The thing that finally made me face up to my stupidity was when I couldn't get a bit of assembler to work reliably, raising questions about what I was doing in assembler anyway.