У меня такая проблемма. Задание на лабораторную работу состоит в том, чтобы остановить системное время на некоторый промежуток (секунды, минуты...). Я предлагал преподавателю два варианта. Первый, это банальный откат системного времени через тот промежуток. Второй, это замена обработчика прерывания на свой (который не прибавляет единицу к значению в ячейке где хранится системное время, таким образом оно какбы замораживается), выжидание некоторое время требуемое, а затем возврат иссходного обработчика. Всё работает на отличненько. Преподу не нравится, требует другой способ, говорит что он есть и тут нужно мыслить нестандартно. Внимание вопрос, что он имеет ввиду? Полазив пару дней в инете нашел третий способ - запрет всех прерываний по команде CLI, и даже чётвёртый - установить маску прерывания по какому-то хитрому способу. Но CLI не работает с под винды, а ставить виртуальную машину ДОС немного сложновато для меня. Знает ли ктото ещё способы остановки системного времени программным способом? Заранее извиняюсь за свой текст и вопросы, раньше не было опыта общения с форумом.
уточни задание, российские преподы искренне считают, что ассемблер - это какое-то извращение под досом
уточни задание, "системное время" - это котороое хранится в 0,2,4 ячейках цмоса и обновляется каждые 976 мкс по irq8 ?
Может такое? Время хранится в BIOSе (микросхеме памяти). Перезаписывать её содержимое. (С перепрошивкой это не ко мне) Что-то в таком виде. Код (Text): mov al,adr out 70h,al ;выбрать адрес CMOS <adr> in al,71h ;ввод байта из CMOS в pегистр al ;ЭТО ЧТЕНИЕ +1 Под ДОСОМ прокатит.