Dunno why you think 16-bit (DOS) code is so mysterious; it's not. Basically the same as what we're doing here in 32-bit land. The main difference is how you do DOS system calls. F'rinstance, to "print" a message to the display, you do this:
LEA DX, IDMsg ;Announce ourselves.
MOV AH, $I21_PRINT_STRING
INT 21H
is pretty much how you do everything, system-wise, unless you're doing ROM BIOS calls, in which case it's
MOV AH, 3
XOR BH, BH
INT 10H ;Get current cursor pos.
(Y'see, everything's done through interrupts)
And of course program structure is different. I used to write mostly .COM programs, reeeeely compact li'l jobbies. Program start is always @ 100H, and all segment registers (CS, DS, ES, SS) point to your code, so it's really easy to deal with data and the stack.
But it ain't rocket surgery.