Вообще какой-то некорректный вопрос. Многие, думаю, пишут под большие современные архитектуры ПК?

Вы же не осваивали написание на ассемблере до изучения языков высокого уровня? Сомневаюсь, что вы знаете хотя бы половину "примочек", которые умеет ваш проц. Вам достаточно, что ваш компилятор "в теме". Зачем связывать в данном случае? Из-за того, что ассемблер для МК прост и МК достаточно мал и туп? Глупости.
Код на си - это листинг, написанный на языке программирования. В силу этого и при достаточно малой кривизне рук он читаем, расширяем, может быть весьма модульным и
_включать_ в себя мнемоники ассемблера (превед, экзотические комманды) (многие, думаю, видели их в исходниках). Его легче поддерживать, с ним легче работать, его с можно портировать под другие архитектуры почти без глубокого запоя программиста и т.д.
Код на ассемблере - это код на ассемблере. Это удобоваримые человеком команды процессору. Со всеми вытекающими последствиями.
Многие не читают даташит на свой МК, о каком же Си и ассемблере может идти речь, если люди вообще не понимают, как работает МК и что нужно делать, чтобы заставлять его работать.