Für Assembly musst Du halt Kenntnis von der Architektur haben für die Du programmierst, also zum Beispiel den Controller den Du programmierst.
Da gab's mal ein Projekt, da haben die den Microcontroller aus dem RCX von Lego ausgebaut und mit Assembler programmiert und damit diverse Dinge getestet/demonstriert. Mit Assembler kannst Du nahezu jeden Microcontroller programmieren. Zum Beispiel auch Deinen Mainboard-Chipsatz oder son Schmarrn.
Oder Deine GPU so programmieren dass sie zum Beispiel den Status von zwei Leitungen des AGP-Bus abfragt, mit XOR kombiniert und wieder ausgibt. Damit hast Du nen ziemlich teures XOR-Gate.

Zum Beispiel. Bei Assembly sind halt keine Grenzen gesetzt außer die der Architektur selbst.