Assembler ist eine Sprache die sehr nahe an der Maschine ansetzt. Das heißt sie bietet die Funktionen an, die dein Prozessor in Hardware verbaut hat. Also Sachen wie Sprünge, Verzweigungen, Addieren, Subtrahieren und so weiter. Moderne Prozessoren können da schon eine ganze Menge von Haus aus.
Damit schreibst du in Assembler Maschinencode (nur in einer für den Menschen lesbaren Form, die aber nur sehr wenig syntaktischen Zucker enthält). Assembler ist also keine Sprache die auf jedem System nahezu gleich ist, sondern für deine Prozessorarchitektur spezifisch. Damit kannst du, um deine Frage zu beantworten, viel effizienteren Code schreiben, denn du weißt viel über deine Architektur und kannst ihre Vor- und Nachteile so gut ausnutzen. Eingesetzt wird Assembler so weit ich weiß in der Kernel-Programmierung, bei rechenlastigen Anwendungen wie Game-Engines oder VMs.
Wenn du dich damit näher auseinander setzen willst, empfehle ich dir die MIPS-Architektur. Diese ist sehr gut nachzuvollziehen und wird in der Lehre oft eingesetzt wodurch es viel Material zu gibt. Ein sehr gutes Buch zum Einstieg in die "technische Informatik" ist "Digital Design and Computer Architecture. From Gates to Processors" [1] welches es, so weit ich weiß, allerdings nur in Englisch gibt.
[1] http://www.amazon.de/Digital-Design-Computer-Architecture-Processors/dp/0123704979