A Friendly Introduction to Assembly for High-Level Programmers