Nan mais gars, l'assembleur (ou plutot, un assembleur, y en a plusieurs selon la plateforme et le type de proco utilisé) est un language très bas niveau.
Il consiste, comme pour le C++, à transformer du code en instructions compréhensibles par la machine. Il ne gère cependant que très peu d'instructions, de boucles, de conditions, etc, et les zones mémoires (la pile, le tas, la zone de données et la zone de code) doivent être définis. Il ne gère pas les concepts avancées de structures de données. etc.
Le C++ n'en n'est pas différent, il crée aussi des .o, qui sont ensuite linkée par le linker pour obtenir l'executable final.
Donc, l'assembleur est bien un langage de programmation, quoi que t'en dise.