1. Assembly language is a low-level programming language that is closer to machine language. It uses mnemonics and symbolic codes to represent instructions, registers, and memory locations that correspond to the underlying machine language of a CPU.
2. Assembly language must be translated into machine-readable machine code by an assembler program before a computer can execute an assembly language program. It provides a level of abstraction over pure machine language.
3. Registers are high-speed storage areas within the CPU that are used to quickly store and retrieve data and instructions being actively used so the CPU does not have to access slower main memory as frequently. This optimization of using registers improves processing speed.