After finding that COM article, I decided to dig my way through the backissues of MSJ to see what other gems I could uncover. Here's one useful one:
http://www.microsoft.com/msj/0298/hood0298.aspx
It is a basic introduction to x86 assembly from a reverse engineers point of view. Most of it is basic stuff you probably know already, however there are some useful bits there - for instance, it took me some time before I figured out that "xor eax, eax" was being used to clear the register because it led to smaller code size whereas this article tells you about that and similar tricks so it's easier to read optimized code.
It also gives you some useful constructs that access the TEB, for instance now I know that these fs:[00000000] things are setting up new SEH frames. A worthwhile read for times when disas is the only way forward....
thanks -mike