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.