A fundamental introduction to x86 assembly programming