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

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    С точки зрения железа, процессор при подаче напряжения считывает первую инструкцию из адреса, выставленного на адресной шине. Эта инструкция и есть битовое представление ассемблерной инструкции. Первый адрес на шине обычно выставляется для обращения во flash/rom, далее уже сама программа, зашитая туда, инициализирует сам процессор, память, регистры и периферию, эта программа называется БИОС.Так работают все биосы. Раньше в биос прошивался интерпретатор языка бейсик, теперь его туда не встраивают.
    Ассемблер кодирует символьное представление инструкций в битовое, на входе текстовый файл, на выходе бинарный. Для записи инструкций непосредственно в память есть специальный механизм, реализуется аппаратно и называется JTAG, через него можно с другого компьютера писать бинарно непосредственно в память целевого компьютера.
    Для тренировки в ассемблере( а без него НИКУДА, так как это символьное представление самих инструкций) рекомендую или простые отладочные комплекты типа arduino/stm32 или простую виртуальную машину, где можно подгружать свой биос из файла.
    Ответ написан
    Комментировать
  • Как выйти в режим программирования вне ос без помощи дополнительных программ(ассемблер), используя лишь машинные инструкции?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Таким программированием давно никто не занимается. Во времена оны выглядело это так:
    Процессор при подаче питания оставался в состоянии Halt. К шинам адреса и данных было подключено специальное устройство - программатор ОЗУ. Состояло оно из тумблеров адреса, тумблеров данных, кнопок "принять адрес", "следующий адрес" и "записать данные".
    Программа писалась на бумажке, язык - ассемблер конкретного процессора, переводилась на бумажке же в машинный код. Затем этот код пошагово с помощью программатора заносился в ОЗУ (задали стартовый адрес, нажали "принять адрес", задали байт данных, нажали "записать данные", "следующий адрес"...), в регистр IP (регистры тоже хранились в памяти) процессора заносился стартовый адрес программы, программатор отключался от шин и процессор выводился из режима Halt.
    Для записи чего-либо на носитель надо было в программе предусмотреть весь код работы с аппаратурой этого носителя.
    Собственно, чтобы этим маразмом ежедневно не заниматься и было добавлено ПЗУ, хранящее в себе процедуры работы с базовыми устройствами компьютера и код для запуска считывания программ с перфоленты, перфокарт, магнитной ленты, магнитного барабана или диска.
    Ответ написан
    3 комментария