A kind programming language that consists of human readable processor instructions (Mnemonics, as opposed to Opcodes, which would be the number representations of the same instructions). Modern assemblers do furthermore also support certain higher level features,
like macros, datatypes or functions.
Also, assembly language is used to distinct the language from the program that translates into machine code. In general use, both are called assembler which leads to the need to specify in certain situations.
It should also be noted that while people often talk about assembly language in general, there is not "the" assembly language, but rather a large group of them,
one reason being
different processor families having
different instruction sets, the other being
different assembler programs supporting different features, or having different ways of providing those features.