rispondo a stellacometa: un minimo di conoscenza ci vuole. tieni conto pero' che quando parli di linguaggio assembly bisognerebbe sempre specificare "per quale processore" perche' l'architettura(e quindi l'assembly) puo' cambiare molto. Addirittura per lo stesso processore il linguaggio cambia molto a seconda dell'assemblatore. Inoltre credo sia alquanto inutile scrivere un programma interamente in assembly, di solito si cerca di ottimizzare le procedure "collo di bottiglia" riscrivendole in assembly ma solo nei programmi dove la performance e' molto importante... ad esempio la grafica 3D.
In definitiva conoscere l'assembly significa conoscere l'architettura del processore (che e' la parte piu' importante), poi i vari "dialetti" del linguaggio sono solo una questione di leggere il manuale dell'assemblatore che vuoi usare (la parte noiosa, che poi si dimentica
)