This document provides an introduction to NASM assembly language programming. It covers basics of computer organization including the processor, registers, buses, and memory. It then discusses specifics of NASM like instruction syntax, data types, and I/O. The document is intended as a reference for students learning NASM assembly programming and was updated by multiple authors under the guidance of professors at NIT Calicut.