Остановка системного времени

Тема в разделе "WASM.BEGINNERS", создана пользователем Myaddib, 17 мар 2011.

  1. Myaddib

    Myaddib New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2011
    Сообщения:
    1
    У меня такая проблемма. Задание на лабораторную работу состоит в том, чтобы остановить системное время на некоторый промежуток (секунды, минуты...).
    Я предлагал преподавателю два варианта.
    Первый, это банальный откат системного времени через тот промежуток.
    Второй, это замена обработчика прерывания на свой (который не прибавляет единицу к значению в ячейке где хранится системное время, таким образом оно какбы замораживается), выжидание некоторое время требуемое, а затем возврат иссходного обработчика.

    Всё работает на отличненько.

    Преподу не нравится, требует другой способ, говорит что он есть и тут нужно мыслить нестандартно. Внимание вопрос, что он имеет ввиду?

    Полазив пару дней в инете нашел третий способ - запрет всех прерываний по команде CLI, и даже чётвёртый - установить маску прерывания по какому-то хитрому способу. Но CLI не работает с под винды, а ставить виртуальную машину ДОС немного сложновато для меня. Знает ли ктото ещё способы остановки системного времени программным способом?

    Заранее извиняюсь за свой текст и вопросы, раньше не было опыта общения с форумом.
     
  2. Blackbeam

    Blackbeam New Member

    Публикаций:
    0
    Регистрация:
    28 дек 2008
    Сообщения:
    960
    уточни задание, российские преподы искренне считают, что ассемблер - это какое-то извращение под досом
     
  3. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    уточни задание, "системное время" - это котороое хранится в 0,2,4 ячейках цмоса и обновляется каждые 976 мкс по irq8 ?
     
  4. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Может такое?
    Время хранится в BIOSе (микросхеме памяти).
    Перезаписывать её содержимое. (С перепрошивкой это не ко мне)

    Что-то в таком виде.
    Код (Text):
    1. mov al,adr
    2. out 70h,al ;выбрать адрес CMOS <adr>
    3. in al,71h ;ввод байта из CMOS в pегистр al  ;ЭТО ЧТЕНИЕ
    +1
    Под ДОСОМ прокатит.