Вы не правы, т.к. неправильно инициализируете ecx, надо mov ecx,0. Вам надо в несуществующий раздел UltraBeginners. И Вы неправильно поняли задачу, надо занулить ОЗУ не передачей данных по шине, а именно саму микросхему.
Столько команл даже и если влезет в кэш, то заставить их там оказаться невозможно, ты не имеешь возможность управлять им, а что проц туда загружает знает только он. в той же винде есть файл подкачки, потому что необходимый ей код не то что в кеше, он в озу не влезает.
petrstarikov ради интереса почитайте даташиты на микросхемы озу. есть и у них команда зануления микросхемы. хотя хотеть, конечно, не запретишь
А к какой шине они подключены? даже интересно стало как их программировать, основная инфа о модулях озу находится в spd, он читается через smbus, а вот программирование их это хз. да и какие шансы что ось продолжит работать?
Жалкая попытка, что бы прерывания работали, в памяти должна находиться таблица прерываний и расписаны их обработчики, а ты их сотрешь очисткой памяти.
Отлично, а код самих прерываний где возьмешь? как ты создашь эту таблицу? Возьми документацию по интеловским процам, том 2, часть 1 и посмотри описание команды int.
Команда INT прерывает обработку программы, передает управление в DOS или BIOS для определенного действия и затем возвращает управление в прерванную программу для продолжения обработки. Наиболее часто прерывание используется для выполнения операций ввода или вывода. Для выхода из программы на обработку прерывания и для последующего возврата команда INT выполняет следующие действия: - уменьшает указатель стека на 2 и заносит в вершину стека содержимое флагового регистра; - очищает флаги TF и IF; - уменьшает указатель стека на 2 и заносит содержимое регистра CS в стек; - уменьшает указатель стека на 2 и заносит в стек значение командного указателя; - обеспечивает выполнение необходимых действий; - восстанавливает из стека значение регистра и возвращает управление в прерванную программу на команду, следующую после INT. Этот процесс выполняется полностью автоматически. Необходимо лишь определить сегмент стека достаточно большим для записи в него значений регистров. Кстати стек ты тоже сломаешь нафиг очисткой помяти.
Я знаю как работает команда int. Объясните мне как она связано с очисткой ОЗУ. И причем здесь стек? Стек после очистки будет пустой. В чем проблема?
команда передает управление обработчику, для реально режима он указывается таблицей расположенной в самом начале памяти по адресу 0:0. ЕЕ ты сотрешь это раз. В таблице будет взят адрес обработчика прерывания он там хранится как сегмент:смещение и по нему будет передано управление. ЕГО ты тоже сотрешь.
Я же говорил, содержимое ОЗУ можно скопировать на жесткий диск перед очисткой. И потом его восстановить. Если прерывания будут запрещены в момент сброса ОЗУ и последующего восстановления, то никакх проблем с таблицами прерываний и их обработчиками быть не может.
Это в защищенном режиме, в реальном режиме она в начале памяти и IDTR является нулем). У тебя такоя каша в голове, систематизируй свои знания
В любом режиме таблица веторов адресуется IDTR, я по этой теме курсовой писал. И в него в реальном режиме можно записать не только 0. У Вас каша в голове, систематизируйте свои знания.
petrstarikov То что вы пишете - неправда. Зачем вы вводите людей в заблуждение? При кэш-промахах процессор выбирает, декодирует и выполняет команды из ОЗУ. Кэш-промах - это нормальная ситуация, которая происходит периодически. При первом кэш-промахе система упадёт, т.к. Вы очистили ОЗУ. О чем речь?