This document provides an introduction to assembly language programming. It discusses how assembly language uses symbolic names called mnemonics for machine instructions instead of binary patterns. This makes assembly language programs more readable than machine code. An assembler is needed to translate assembly code into executable object code. Assembly language provides direct access to hardware and better performance than high-level languages but is more difficult to program. Macros can be used to avoid repeatedly writing groups of instructions. Parameters allow macros to be customized.