Развёрнутый ответ займет многобуков, поэтому кратко...
Языки бывают двух типов: компилируемые и интерпретируемые.
Сложность создания первых заключается в трансляции высокоуровневый абстракции в низкоуровневый код (+управление памятью и прочие сложные вещи). Самый простой подход - придумать свой синтаксис, который переводить в какой-нибудь C++ или C#, а затем использовать стандартные средства языка для компиляции.
Но я рекомендую вам сделать интерпретируемый язык (с постставкой Script). В таком случаем вы можете просто последовательно обрабатывать команды типа if cmd='add' then return a+b
А если вы не хотите разбираться во всем этом, то лучше использовать генератор парсеров/компиляторов. Затем написать на своём языке компилятор своего языка (bootstrapping), чтобы получить независимый компилятор.
P. S.
Ваш вопрос про ассемблер не понятен. Вы хотите написать парсер и компилятор на ассемблер или же хотите, транслировать ваш язык в ассемблер? Или интерпретатор на ассемблере? Чем ниже уровень, тем больше вариантов.