Просто Ассемблер хорош для мелочей, но даже небольшие утилиты удобнее писать на языке более высокого уровня. В этом смысле оптимальный уровень - С, он позволяет прекрасно работать и с отдельными битами, и с косвенной адресацией, и легко программировать на уровне массивов, циклов и структур. Не говоря уже о преимуществе переносимости на другую архитектуру.
"Подавляющее большинство компонентов Windows написано на C и лишь часть из них — на C++. Язык ассемблера применяли только при создании частей системы, напрямую взаимодействующих с системным оборудованием (например, при написании обработчика ловушек прерываний) или требующих исключительного быстродействия (скажем, при переключении контекста). " (Руссинович, "Внутреннее устройство Microsoft Windows")
Кстати, именно С является наиболее распространенным языком программирования в мире, его используют в двадцать раз чаще, чем Ассемблер, и в два раза чаще, чем C++ ( http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html )