Linguagem de máquina é o fluxo binário real que uma CPU executa.
A linguagem assembly usa mnemônicos e sintaxe padrão, que é mais fácil para as pessoas trabalharem. Um montador terá um arquivo de texto que consiste em tal e traduzir, ou montar , em um arquivo de objeto binário contendo linguagem de máquina.
Pode haver um passo intermediário chamado ligando se você tiver código em vários arquivos e tiver instruções "chamando" rotinas em outros arquivos. Os montadores avançados não são muito diferentes dos compiladores.
Uma arquitetura de conjunto de instruções é uma definição ou implementação específica do fabricante da CPU da linguagem de máquina + a sintaxe padrão e mnenônica para ela.
A maioria dos ISAs existe há muito tempo, portanto, normalmente há muitas revisões. Então você tem um Intel x86 ISA, mas várias revisões dependendo se você está falando de um antigo 8086, um 80286, 80386, etc. Mesma coisa com o ARM, você tem ARMv5, ARMv6, ARMv7, etc.