Например Fasm? Можно ли написать с ним (как и с С/С++) GUI программу или он годен только для программирования микроконтроллеров и программ низкого уровня?
Да уже практически не требуется для МК; включенная оптимизация С зачастую генерирует более оптимальный код. Можно использовать, если действительно сложные вычисления и вы математик, но справедливо тоже только для МК (например, когда деления аппаратного нет). Не обойтись при работе с оборудованием, когда требутся запись в какие-либо регистры... Но и это всё в макросах С в библиотеках к соответствующей периферии.