Хоть я и не профессиональный программист, всё ж возьму на себя смелость вставить пять копеек...
Для начала разговора, что "каждая команда asm соответствует определенному машинному коду" - это уже давно не так. Наивно полагать, что программа для IBM AT может выполняться на Intel Core9 только потому, что процессорные команды те же... Да, команды ассемблера времён AT современным процессором пониматься будут. Но внутренние команды современных процессоров, всех сплошь имеющих RISC-архитектуру, совсем не те, что для 80286. Команды ассемблера, прежде чем выполниться, внутри процессора ретранслируются во внутренние команды "настоящего" машинного кода. Для современного процессора даже ассемблер - язык высокого уровня. Во всяком случае, уровня более высокого, чем внутренние исполняемые команды.
Во-вторых, штука в том, что класс программиста вовсе не зависит от его умения писать на ассемблере. Более того, написание программ для обычного компьютера - далеко не единственный и никак не главный вариант приложения талантов программиста. Класс программиста определяется его умением создавать эффективные алгоритмы. Алгоритмы решения определённой проблемы, задачи, которая перед ним стоит. А на каком языке он затем воплощает свои алгоритмы - дело второстепенное. Графоман может печатать свои опусы в Ворде или даже надиктовывать программе распознавания речи - он всё равно останется графоманом. А Лев Толстой прекрасно обходился гусиным пером - но он таки Лев Толстой...
Наконец, совершенно невозможно себе представить программирование на ассемблере сверхсложных задач. Вы представляете сложность таких алгоритмов, как то же распознавание речи? Сжатие видеопотока в реальном времени? Игры? Системы проектирования топологии? Да хотя бы сжатие пиксельной картинки в jpeg? Это уж не говоря о программах искусственного интеллекта, беспилотного управления автомобилем, и массе других примеров программ фантастической сложности. Да, наверно, можно это всё написать и на ассемблере. Только вот возьмём для примера любую современную игрушку, дистрибутив которой уже в двоичном коде занимает десятки гигабайт. Прикиньте, сколько строк кода займёт эта программа, если её писать на ассемблере, и сколько человеко-лет понадобится для того, чтоб просто напечатать этот код, не говоря уж о том, чтоб его разработать и отладить...
Вот поэтому никто, или почти никто, за исключением системных программистов, не пишет на ассемблере. Эпоха простых программ давно закончилась. Программирование на ассемблере сложных программ и тем более развесистых программных пакетов, состоящих из нескольких тысяч взаимодействующих модулей, было бы равносильно тому, чтобы изготовить в своём гараже Мерседес.
С нуля.
Дрелью, ножовкой и напильником.
Возьмётесь?