1) You probably meant 89h C3h and 8Bh D8h? Writing them as one value means the first byte ends up in the higher memory location, for a 'little endian' architecture like Intel: http://en.wikipedia.org/wiki/Endianness. Anyway, yes, there are sometimes multiple ways to create the same operation. One is not better than the other. But note that x86 can only have one memory operand, and whether it's the first or the second operand depends on the encoding. When both operands are registers, you can choose.
2) The encoding for moving an imm to a reg is shorter than imm to mem/reg. So in general you want to use that one to save on code size.
Thank you, even these little things help me (and others) out. If you or anyone else have any other pearls
PLEASE post them. I'mm going to give my classmates a link to this forum. Hopefully we can learn this inspite of our prof.
Then next question is more of an opinion. This is a 7 week course, with little to no instruction. Realistically, how much can/should we be able to learn? I picked up Ansi C in a 7 week course with no problems, in fact I excelled at the class to the point I was getting more adv assignments than others.