Аналоговые часы

Автор: Пользователь скрыл имя, 15 Декабря 2012 в 13:05, курсовая работа

Краткое описание

Первый вопрос, который задает себе человек, впервые услышавший об этом языке программирования, — а зачем он, собственно, нужен? Особенно теперь, когда все пишут на C/C++, Delphi или других языках высокого уровня? Ведь очень многое можно создать на С, но ни один язык, даже такой популярный, не может претендовать на то, чтобы на нем можно было написать действительно «все».

Оглавление

Введение
Теоретическая часть
Средства BIOS
Графическое программирование
Графические видеорежимы
1
2
Принцип работы растрового дисплея
Часы реального времени и системный таймер
Постановка задачи

Файлы: 1 файл

Курсовая работа «Аналоговые часы» по дисциплине «Организация эвм.doc

— 121.50 Кб (Скачать)

 

Стандартные графические  режимы SVGA могут быть 4-, 8-, 15-, 16-, 24- и 32-битными.

 

4-битные режимы (16 цветов):

VGA

012h: 640x480 (64 Кб)

VESA VBE 1.0

102h: 800x600 (256 Кб)

104h: 1024x768 (192 Кб)

106h: 1280x1024 (768 Кб)

 

Каждый пиксель описывается одним битом, для вывода цветного изображения требуется программирование видеоадаптера на уровне портов ввода-вывода.

Видеоадаптер может  поддерживать и собственные нестандартные  видеорежимы. Список их номеров можно  получить, вызвав подфункцию 00h, а получить информацию о режиме по его номеру — вызвав подфункцию 01h видеофуикции 4Fh. Более того, для стандартных режимов также следует вызывать подфункцию 01h, чтобы проверить реальную доступность режима (например, режим может быть в списке, но не поддерживаться из-за нехватки памяти). VBE 2.0 разрешает видеоадаптерам не поддерживать никаких стандартных режимов вообще.

 

INT 10h АН = 4Fh, AL = 00 — Получить общую SVGA-информацию

Ввод:

AX = 4F00h 
ES:DI = адрес буфера (512 байт)

Вывод:

AL = 4Fh, если функция поддерживается 
АН = 01, если произошла ошибка 
АН = 00, если данные получены и записаны в буфер


 

 

1.3 Часы реального времени и системный таймер

Начиная с IBM AT, персональные компьютеры содержат два устройства для управления процессами — часы реального времени (RTC) и собственно системный таймер. Часы реального времени получают питание от аккумулятора на материнской плате и работают даже тогда, когда компьютер выключен. Это устройство можно использовать для определения/установки текущих даты и времени, установки будильника с целью выполнения каких-либо действий и для вызова прерывания IRQ8 (INT 4Ah) каждую миллисекунду. Системный таймер используется одновременно для управления контроллером прямого доступа к памяти, для управления динамиком и как генератор импульсов, вызывающий прерывание IRQ0 (INT 8h) 18,2 раза в секунду. Таймер предоставляет богатые возможности для препрограммирования на уровне портов ввода-вывода, но на уровне DOS и BIOS и часы реального времени, и системный таймер используются только как средство определения/установки текущего времени и организации задержек.    

           

Функция DOS 2Ah — Определить дату

 

Ввод:

AX = 2Ah

Вывод:

СХ = год (1980 – 2099) 
DH = месяц 
DL = день 
AL = день недели (0 — воскресенье, 1 — понедельник...)


 

Функция DOS 2Ch — Определить время

 

Ввод:

AX = 2Ch

Вывод:

СН = час 
CL = минута 
DH = секунда 
DL = сотая доля секунды


 

Эта функция использует системный таймер, так что время  изменяется только 18,2 раза в секунду  и число в DL увеличивается сразу  на 5 или 6.

 

Функция DOS 2Bh — Установить дату

Ввод:

АН = 2Bh 
СХ = год (1980 – 2099) 
DH = месяц 
DL = день

Вывод:

АН = FFh, если введена несуществующая дата, 
АН = 00h, если дата установлена


Функция DOS 2Dh — Установить время

 

Ввод:

АН = 2Dh 
СН = час 
CL = минута 
DH = секунда 
DL = сотая доля секунды

Вывод:

AL = FFh, если введено  несуществующее время, 
AL = 00h, если время установлено


 

 

 

Функции 2Bh и 2Dh устанавливают  одновременно как внутренние часы DOS, которые управляются системным  таймером и обновляются 18,2 раза в  секунду, так и часы реального времени. BIOS позволяет управлять часами напрямую:

 

INT 1Ah АН = 04h — Определить дату RTC

 

Ввод:

АН = 04h

Вывод:

CF = 0, если дата прочитана 
СХ = год (в формате BCD, то есть 1998h для 1998-го года) 
DH = месяц (в формате BCD) 
DL = день (в формате BCD) 
CF = 1, если часы не работают или попытка чтения пришлась на момент обновления


 

INT 1Ah АН = 02h — Определить время RTC

 

Ввод:

АН = 02h

Вывод:

CF = 0, если время прочитано 
СН = час (в формате BCD) 
CL = минута (в формате BCD) 
DH = секунда (в формате BCD) 
DL = 01h, если действует летнее время, 00h, если нет 
CF = 1, если часы не работают или попытка чтения пришлась на момент обновления


 

 

 

 

 

INT 1Ah АН = 05h — Установить дату RTC

 

Ввод:

АН = 05h 
СХ = год (в формате BCD) 
DH = месяц 
DL = день


 

 

INT 1Ah АН = 03h — Установить время RTC

 

Ввод:

АН = 03h 
СН = час (в формате BCD) 
CL = минута (в формате BCD) 
DH = секунда (в формате BCD) 
DL = 01h, если используется летнее время, 0 — если нет


 

 

 

 

 

  1. Описание логической структуры

2.1 Алгоритм программы

  1. Очистка экрана
    1. Вывод текущего времени в виде часов, оснащенных окружностью и тремя стрелками (часовой, минутной, секундной).
  1. Выход в ОС осуществляется при нажатии клавиши ESC.

 

Блок-схема1


Запуск программы



Сохранение исходного видеорежима 



Установка нового видеорежима



  Рисование окружности



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



Проверка нажатия клавиши Esc



  Да Нет


 


Выход


 

2.2 Структура программы с описанием основных процедур

    1. ClrScr - Очистка экрана
    2. PressAnyKey  - Ожидание нажатия клавиши
    3. GoToCursor  - Переход в нужную позицию экрана
    4. PutPixel – Рисует окружность
    5. OutCros - Затирает старые стрелки и отображает на новом месте
    6. CurUgols - Устанавливает углы для стрелок в зависимости от текущего времени
    7. GradToRad - Переводит радианы в градусы
    8. SinCos - Вычисляет синус и косинус
    9. Plot - Отображает точку на экране
    10. Line - Отображает линию по начальной точке, углу и радиусу
    11. Time - Загружает текущие время в поля данных

 

3.Инструкция пользователю

3.1 Запуск программы

 

Запуск программы осуществляется путем вводу в командной строке (Пуск / Программы / Стандартные / Командная строка):

    1. Tasm.exe Prog.asm
    2. Tlink.exe Prog.obj
    3. Prog.exe

3.2 Порядок работы

 

После запуска программы на экране появятся аналоговые часы с тремя стрелками: часовой, минутной и секундной, отличающимися между собой по длине и цвету.

При нажатии клавиши ESC произойдет выход из программы.

Рис.1 Отображение аналоговых часов                                                                                                                

Заключение

 

Итак, подводим вывод о проделанной работе. Мы реализовали на языке ассемблер программу «Аналоговые часы» в том представление, каком мы себе представляли вначале. Проделав такую работу мы не только узнали, что такое язык низкого уровня, но и познакомились с ним на практике. Этот процесс расширил наш кругозор, а так же усовершенствовал наши навыки в работе с системами счисления. Благодаря языку ассемблер мы улучшили свои знания по программированию, которые ранее были приобретены в процессе изучения более высокого уровня языка.

Этот язык заинтересовал  многих учащихся  и не думаю, что  хоть кто-нибудь из тех, кто изучал этот язык остался равнодушным к нему.

 

Список использованной литературы

 

  1. В. Юров, С. Хорошенко, “Ассемблер. Учебный курс.”, С.-П. “Питер”, 1999г.
  2. Зубков, “Язык ассем блера для DOS, WINDOWS, UNIX”, М. “ДМК”, 2000г.
  3. П.В.Беспалов С.В. Горин С.М. Коновалов, «Программирование на языке Ассемблер», М. “Высшая школа”, 1993г.
  4. П.Нортон , «Персональный компьютер фирмы IBM и операционная система M-DOS», М. “Радио и связь”, 1991г.
  5. Питер Абель ,«Язык Ассемблера для IBM PC и программирования», М. “Высшая школа”, 1992г.
  6. П.Нортон , «Язык ассемблера для IBM PC», М. “Радио и связь”, 1990г.

Информация о работе Аналоговые часы