- •По курсу: ”организация эвм и систем”
- •Печатается по решению редакционно-издательского совета
- •Введение
- •1Введение в архитектуру реального режима ibm pc
- •Память и процессор
- •Распределение адресного пространства
- •Система прерываний
- •Система ввода-вывода
- •Архитектурные особенности процессоров ia-32
- •Дополнительные режимы адресации
- •Использование средств 32-разрядных процессоров в программировании
- •2Общие указания по выполнению лабораторных работ
- •Лабораторная работа № 1 Изучение структуры программы и способов адресации мп 8086
- •Домашняя подготовка
- •Лабораторное задание
- •Варианты задания
- •Контрольные вопросы
- •Теоретическая часть
- •Способы адресации и оптимизация программ
- •Строковые команды
- •Сканирование строки.
- •Загрузка регистра из строки.
- •Сегментная структура программ (структура и образ памяти программы .Exe).
- •Двоично-десятичные числа
- •Лабораторная работа № 2. Организация доступа к дискам в режиме ms dos и анализ системных ошибок.
- •Домашняя подготовка
- •Лабораторное задание
- •Варианты заданий
- •Контрольные вопросы
- •Теоретическая часть
- •Лабораторная работа № 3. Организация прерываний и резидентные программы.
- •Домашняя подготовка
- •Лабораторное задание
- •Контрольные вопросы
- •Варианты задания
- •Теоретическая часть (См. Также разделы 1.3 и 2.4)
- •3Организация прерываний и резидентные программы.
- •Резидентные программы
- •Механизм прерываний
- •Структура и образ памяти программы .Сом
- •Примеры резидентных программ
- •Лабораторная работа № 4. Системное время в компьютерах ibm pc
- •Варианты задания
- •Домашняя подготовка
- •Контрольные вопросы
- •Теоретическая часть
- •4 Системное время в компьютерах ibm pc
- •Измерение частоты при помощи rdtsc
- •Назначение каналов таймера в ibm pc
- •Библиографический список
- •Приложение Функции ms dos для выполнения лабораторных работ
- •Установка вектора прерывания
- •Чтение вектора прерывания
- •Завершение программы
- •Создание файла
- •Закрытие файла
- •Чтение из файла
- •Очистка экрана
- •Дополнительные средства ассемблера
Домашняя подготовка
Ознакомиться с теоретической частью лабораторной работы №4.
Изучить режимы работы таймеров, выполняемые ими функции и способы доступа к ним [1,2,5,6, 8, 9].
Подготовить ответы на контрольные вопросы.
В соответствии с вариантом задания, составить программу на языке ассемблера.
Контрольные вопросы
Каким образом/средствами можно обеспечить требуемую длительность заданного временного интервала?
Режимы работы БИС 8254.
Объясните назначение и использование канала 0 таймера в IBM PC?
Объясните назначение и использование канала 1 таймера в IBM PC?
Объясните назначение и использование канала 2 таймера в IBM PC?
Назначение часов реального времени.
Возможные варианты калибровки счётчика тактов TSC.
Назначение команды INT 1Ch в стандартном обработчике прерываний от таймера.
Теоретическая часть
4 Системное время в компьютерах ibm pc
Измерение частоты при помощи rdtsc
Измерение частоты при помощи RDTSC происходит следующим образом:
Маскируются все прерывания кроме прерывания от таймера.
Выполняется команда HLT.
Считывается и сохраняется значение счетчика.
Снова выполняется команда HLT.
Считывается значение счетчика.
Разность значений считанных в пунктах 3 и 5 есть количество тактов за 1 тик таймера (частота прерываний таймера примерно 18,2Гц).
Посмотрим на временную диаграмму.
Рисунок 4.1 – Временная диаграмма
Момент запуска программы обозначен как t0, штрихи на оси – моменты, когда происходит прерывание от таймера. Первый HLT в листинге нужен для того чтобы преодолеть время t1, которое неизвестно заранее, так как программа может быть запущена в произвольное время. Затем, в момент между t1 и t2 считывается значение счетчика, оно сохраняется и снова делается HLT, процессор будет простаивать до первого прерывания, то есть практически ровно период t2, который и равен периоду прерываний от таймера. Таким образом, при известном значении периода таймера 18,2 Гц, а также количества тактов за этот период можно узнать точную тактовую частоту.
mov al,0FEh ;маскируем все прерывания кроме таймера
out 21h,al
hlt
rdtsc
mov esi,eax
hlt
rdtsc
sub eax,esi
;в EAX - количество тактов процессора за 1 тик таймера преобразование в мегагерцы и вывод на экран
mov al,0
out 21h,al
Назначение каналов таймера в ibm pc
Стандартное использование каналов таймера в компьютере поясняется на рисунке 4.2.
Рисунок 4.2 - Схема стандартного использования каналов таймера
Канал 0 таймера используется для отсчета текущего времени. При инициализации компьютера он программируется для работы в режиме 3с двухбайтным начальным значением счетчика равным 0. При таком режиме полный цикл таймера (частота генерации OUT) составляет около 55 миллисекунд. Сигнал GATE всегда установлен в высокий уровень. Сигнал OUT поступает в контроллер прерываний на линию 0 (IRQ0), в результате чего с периодичностью 55 миллисекунд происходит прерывание от таймера.
Стандартный обработчик прерываний от таймера BIOS выполняет следующие функции:
- увеличивает на 1 текущее время, которое содержится в двойном слове по адресу 40h:6Ch; при достижении значения 1800B0h обнуляет это двойное слово и устанавливает байт по адресу 40h:70h в единицу, указывая, что выполнен переход через полночь;
- уменьшает на 1 байт счетчика ожидания выключения мотора дискет по адресу 40h:40h и при достижении нулевого значения выполняет выключение мотора;
- выполняет команду INT 1Ch.
Естественно, нулевой канал таймера может использоваться и для программирования более коротких интервалов времени. При перепрограммировании таймера на меньший интервал необходимо корректно передавать управление базовому обработчику прерываний таймера, чтобы не нарушить отсчет текущего времени и работу других программ.
Канал 1 таймера используется как генератор для схемы регенерации памяти. BIOS программирует его в режиме 2 с однобайтовым счетчиком (младший байт), равным 18. Такой счетчик обеспечивает интервал чуть больший 15 микросекунд. Не рекомендуется перепрограммировать канал 1, так как это нарушит цикл регенерации памяти и приведет к разрушению ее содержимого.
На компьютерах класса AT этот канал таймера можно использовать для отсчета интервалов времени. Для этого следует проверять бит 4 управляющего порта 61h, который меняет свое значение на противоположное каждый цикл первого канала таймера (то есть примерно через 15 микросекунд).
Канал 2 таймера, как правило, используется для генерации звука. Сигнал GATE для второго канала управляется битом 0 порта 61h. Сигнал OUT заведен на динамик. Соединение сигнала OUT с динамиком управляется битом 1 порта 61h.
Второй канал таймера может использоваться для целей отсчета времени. Следует отметить, что средства BIOS используют этот канал таймера только для генерации звука и он не имеет постоянного режима работы и постоянного начального значения счетчика. Поэтому можно использовать этот канал в любом режиме. Тем не менее, рекомендуется после завершения работы со вторым каналом установить третий режим с двухбайтным счетчиком, так как некоторые BIOS не производят инициализацию этого канала перед выдачей звукового сигнала.