In asm you write loops because they are easy, map is hard (and generally slow because it's a lot more code.)
ASM derives performance from specialization, ASM asks, how often is this code ACTUALLY going to run on another architecture, OS, etc? And then gains performance by not supporting those things via abstractions, etc.
Throw away your CS textbook and run benchmarks, reality dictates theory, not vice versa.