Как выйти в режим программирования вне ос без помощи дополнительных программ(ассемблер), используя лишь машинные инструкции?
Таким программированием давно никто не занимается. Во времена оны выглядело это так:
Процессор при подаче питания оставался в состоянии Halt. К шинам адреса и данных было подключено специальное устройство - программатор ОЗУ. Состояло оно из тумблеров адреса, тумблеров данных, кнопок "принять адрес", "следующий адрес" и "записать данные". 
Программа писалась на бумажке, язык - ассемблер конкретного процессора, переводилась на бумажке же в машинный код. Затем этот код пошагово с помощью программатора заносился в ОЗУ (задали стартовый адрес, нажали "принять адрес", задали байт данных, нажали "записать данные", "следующий адрес"...), в регистр IP (регистры тоже хранились в памяти) процессора заносился стартовый адрес программы, программатор отключался от шин  и процессор выводился из режима Halt.
Для записи чего-либо на носитель надо было в программе предусмотреть весь код работы с аппаратурой этого носителя.
Собственно, чтобы этим маразмом ежедневно не заниматься и было добавлено ПЗУ, хранящее в себе процедуры работы с базовыми устройствами компьютера и код для запуска считывания программ с перфоленты, перфокарт, магнитной ленты, магнитного барабана или диска.
Ассемблер -- и есть машинные инструкции. В FASM можно написать db $CD $20 -- это будет эквивалентом int 20h. Опкоды смотреть в справочнике по x86, в интернетах их навалом.