This document provides an introduction to assembler programming on IBM System z mainframes. It discusses why programmers may choose to use assembler, prerequisites for assembler programming, an overview of the z/Architecture including registers and memory organization. It also covers binary and hexadecimal number representation, and base-displacement addressing which allows specifying a memory address using a register and offset value. The intended audience is those with basic computer programming and z/OS knowledge.