Ладно, отталкиваясь от прошлого комментария я всё-таки объясню
Ассемблер - не совсем язык программирования. Это скорее программа для связи конкретно твоего процессора с конкретно твоей операционной системой.
Разработали новый процессор и новую винду - нужен новый асемблер, чтобы вообще хоть что-то работало. Так и живём.
Нужно же как-то создавать битный код
Ассемблер - набор команд для процессора, ни один компиляктер Си не оптимизирует программу так, как её можно изначально написать на асме. Я замерял разница где-то 30%