La domanda è... a cosa ti serve l'assembly?
L'assembly lo conoscono solamente:
- chi scrive il software per applicazioni mirate (in genere embedded) in cui si deve risparmiare memoria il più possibile e in cui bisogna dire per filo e per segno cosa fare. La complessità non è data dal linguaggio in sè, ma dal fatto che devi scomporre tutto fino ai minimi termini. Fare una somma ti prende un pò di righe...
inoltre l'assembly dipende dalla architettura. Quello della x86 non so come sia, nel senso... lo trovi sicuramente su internet, ma è differente da quello del MIPS. Perchè viene ottimizzato (ovviamente) per quella architettura. Diciamo che puoi vedere l'assembly come "le istruzioni che sa eseguire il processore".
- chi deve lavorare sul compilatore. Per intenderci... chi sviluppa APP e il 99% dei programmatori non ha bisogno di conoscere l'assembly sul lavoro perchè non lo usa. Quello che ha fatto lock3r, io e wine, di fatto è una cosa reale ma didattica. Diciamo che serve per dire: esiste, si ragiona più o meno così, capite come è una architettura, se ci lavorerete davvero saranno dolori, arrivederci.
Anche a livello di SoC per quanto si può si lavora in C.
Segui il cosniglio degli altri utenti.
Per il resto... come funziona una architettura... dipende da quello che devi fare. Non ha senso e non serve sapere come funziona se devi scrivere semplice codice o SW "generitco". Inoltre credo che quando vai a "indirizzare la memoria", ci sia il sistema operativo a fare da tramite. Di certo non ti si lascia libero di scrivere ad cazzum (forse Win si :asd: ) sulla memoria. Di certo non accedi ai registri interni della CPU... Insomma... Secondo me ha senso avere determinate conoscenze delle architetture solamente se lavori in determinati contesti. Altrimenti è uno spreco di risorse/tempo.
Discorso reti... cosa intendi per reti? Rete internet? E' un argomento vastissimo. Puoi tranquillamente lavorare e configurare una rete LAN di un edificio o altro senza conoscere il C o architettura dei procesori. Li ti serve, casomai, avere conoscenze sui protocolli di routing. E nemmeno in modo spinto. Semmai sapere che esistono e come funzionano.
Oppure reti di telecomunicazioni e dunque modulazioni? OFDM? li ti serve matematica. Fourier come il pane. Nyquist...
Informazione e codici? Tipo Huffman? Shannon-Fano? Per non parlare (non li conosco) degli algoritmi di compressione e altro... o tipo l'mp3 il jpeg... dietro c'è parecchia matematica...
Inoltre per altre materie che avevi citato... ti serve molta molta molta matematica. Se si tratta di programmare no. Se si tratta di fare le cose in dettaglio... si.
Insomma... piano piano impari. Ma prima devi capire cosa realmente vuoi fare. E questo lo capisci solamente se inizi dal basso. Perchè capisci meglio cosa ti piace e fino a che punto ti vuoi fermare