Работа ассемблера заключается в переводе мнемоникса в двоичные значения. x86 - это набор инструкций CISC с длинной историей, поэтому этот перевод довольно сложно выполнить вручную.
Процесс компоновки еще хуже, он создает конечный исполняемый файл, который подразумевает создание множества структур. Это гораздо сложнее сделать и поддерживать вручную.
Если вы действительно хотите что-то написать с использованием кодов операций, возьмите hex-редактор (или даже блокнот, если вы знаете все коды ASCII :)) и напишите программу .COM. Все более сложное (.exe) будет излишним.