When doing embedded programming for a small microcontroller, even if a C compiler is available for the CPU, you may need to resort to assembly language either to reduce the size of the code or to achieve maximum speed, or (usually) both. Some microcontrollers have have only a few KB of program memory, and less than 1 KB of RAM.

However compilers for microcontroller architectures are pretty good these days, and I seldom have to resort to assembler anymore.

I compile C code to assembler to study how the compiler works. Try to play around with the output. Understand what happens under the hood when we choose some construct. Like if-else-if, switch case and array lookup. How does the compiler treat them? Which will be faster? Assembler helps a lot in understanding how higher constructs work.

For those of us not familiar with the interrupt table, what does this do?
–
Mason WheelerNov 1 '10 at 2:52

1

@Mason This will perform the most wonderful function of wiping your master boot record! You must do this to allow a low-level format when FDISK cannot remove partition(s) on your drive. See Wiping Clean the Master Boot Record or the search results here.
–
Mark CNov 1 '10 at 2:56

One note, but debug wasn't included with Windows 7.
–
rjziiNov 1 '10 at 2:56

@Rob And I think it was "neutered" to some degree on WinXP. (History in 2nd link, specifics here.)
–
Mark CNov 1 '10 at 2:57