The end result is that I am now addicted to assembly programming. There's so many clever tricks you can use, like:
* Manipulating the addresses your code assembles at so that the addresses in a jump table can overlap.
* Using `lea` on data values to convert ASCII numbers to their normal equivalent while in motion.
* Making a 128KB lookup table.
* Unrolling all the loops in the program.
* Reusing as many registers as possible (including using bx as a frame pointer) just so you don't have to pop them.
And when you're studying your code, and you suddenly have the flash of inspiration about how to make it faster, there's this feeling of, "Oh, that's so brilliant, but so evil..."
(Of course, then you have to debug it all. :-P)