@lexaxaxa

Как выйти в режим программирования вне ос без помощи дополнительных программ(ассемблер), используя лишь машинные инструкции?

Как выйти в режим программирования вне ос без помощи дополнительных программ(без ассемблера), используя лишь машинные инструкции? Как затем находить на диске и загружать созданную программу?Есть ли специальная литература(не по ассемблеру)?Хотелось бы иметь детальное представление полученное из практики обо всех уровнях абстракций, начиная с машинного языка. И если можно пример самой простой программы.
  • Вопрос задан
  • 3402 просмотра
Решения вопроса 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
С точки зрения железа, процессор при подаче напряжения считывает первую инструкцию из адреса, выставленного на адресной шине. Эта инструкция и есть битовое представление ассемблерной инструкции. Первый адрес на шине обычно выставляется для обращения во flash/rom, далее уже сама программа, зашитая туда, инициализирует сам процессор, память, регистры и периферию, эта программа называется БИОС.Так работают все биосы. Раньше в биос прошивался интерпретатор языка бейсик, теперь его туда не встраивают.
Ассемблер кодирует символьное представление инструкций в битовое, на входе текстовый файл, на выходе бинарный. Для записи инструкций непосредственно в память есть специальный механизм, реализуется аппаратно и называется JTAG, через него можно с другого компьютера писать бинарно непосредственно в память целевого компьютера.
Для тренировки в ассемблере( а без него НИКУДА, так как это символьное представление самих инструкций) рекомендую или простые отладочные комплекты типа arduino/stm32 или простую виртуальную машину, где можно подгружать свой биос из файла.
Ответ написан
Комментировать
Vapaamies
@Vapaamies
Разработчик будущей ОС для ПК размером 250 МБ
Ассемблер -- и есть машинные инструкции. В FASM можно написать db $CD $20 -- это будет эквивалентом int 20h. Опкоды смотреть в справочнике по x86, в интернетах их навалом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Таким программированием давно никто не занимается. Во времена оны выглядело это так:
Процессор при подаче питания оставался в состоянии Halt. К шинам адреса и данных было подключено специальное устройство - программатор ОЗУ. Состояло оно из тумблеров адреса, тумблеров данных, кнопок "принять адрес", "следующий адрес" и "записать данные".
Программа писалась на бумажке, язык - ассемблер конкретного процессора, переводилась на бумажке же в машинный код. Затем этот код пошагово с помощью программатора заносился в ОЗУ (задали стартовый адрес, нажали "принять адрес", задали байт данных, нажали "записать данные", "следующий адрес"...), в регистр IP (регистры тоже хранились в памяти) процессора заносился стартовый адрес программы, программатор отключался от шин и процессор выводился из режима Halt.
Для записи чего-либо на носитель надо было в программе предусмотреть весь код работы с аппаратурой этого носителя.
Собственно, чтобы этим маразмом ежедневно не заниматься и было добавлено ПЗУ, хранящее в себе процедуры работы с базовыми устройствами компьютера и код для запуска считывания программ с перфоленты, перфокарт, магнитной ленты, магнитного барабана или диска.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы