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

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

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

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

Оглавление

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

Файлы: 1 файл

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ  И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

 

Брянский государственный

технический университет

 

 

Кафедра: « Информатики и программного обеспечения»

 

 

Курсовая  работа

 

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

 

по дисциплине «Организация ЭВМ»

 

 

 

 

Выполнила:

Студентка  группы 06- САПР

Крохина Н.Ю.

Проверил:

Статутов А.Г.

 

 

 

Брянск 2007

 

ЗАДАНИЕ

на курсовой проект по дисциплине  
«Организация ЭВМ»

 

 

 

Студент         Крохина Н.Ю.          Группа       06-САПР                 

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

 

 

Техническое задание

 

Отображение аналоговых часов реального времени в  графическом режиме.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Руководитель         Статутов А.Г.

 

Оглавление

 

Введение

Теоретическая часть

               Средства BIOS

                       Графическое программирование

               Графические видеорежимы

                       1

                       2

 

              Принцип работы растрового дисплея

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

Постановка  задачи  
Введение

 

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

Итак, на ассемблере пишут:

  • все, что требует максимальной скорости выполнения: основные компоненты компьютерных игр, ядра операционных систем реального времени и просто критические участки программ;
  • все, что взаимодействует с внешними устройствами: драйверы, программы, работающие напрямую с портами, звуковыми и видеоплатами;
  • все, что использует полностью возможности процессора: ядра многозадачных операционных систем, DPMI-серверы и вообще любые программы, переводящие процессор в защищенный режим;
  • все, что полностью использует возможности операционной системы: вирусы и антивирусы, защиты от несанкционированного доступа, программы, обходящие эти защиты, и программы, защищающиеся от этих программ;
  • и многое другое.

Стоит познакомиться  с ассемблером поближе, как оказывается, что многое из того, что обычно пишут  на языках высокого уровня, лучше, проще  и быстрее написать на ассемблере.

 

  1. Теоретическая часть

1.1Средства BIOS

Функции DOS вывода на экран  позволяют перенаправлять вывод  в файл, но не позволяют вывести  текст в любую позицию экрана и не позволяют изменить цвет текста. DOS предполагает, что для более  тонкой работы с экраном программы должны использоваться видеофункции BIOS. BIOS (базовая система ввода-вывода) — это набор программ, расположенных в постоянной памяти компьютера, которые выполняют его загрузку сразу после включения и обеспечивают доступ к некоторым устройствам, в частности к видеоадаптеру. Все функции видеосервиса BIOS вызываются через прерывание 10h. Рассмотрим функции, которые могут быть полезны для вывода текстов на экран (полностью видеофункции BIOS описаны в приложении 2).

Выбор видеорежима

BIOS предоставляет возможность  переключения экрана в различные  текстовые и графические режимы. Режимы отличаются друг от  друга разрешением (для графических)  и количеством строк и столбцов (для текстовых), а также количеством  возможных цветов.

INT 10h, АН = 00 — Установить видеорежим

Ввод:

AL = номер режима в  младших 7 битах

Вывод:

Обычно никакого, но некоторые BIOS (Phoenix и AMI) помещают в AL 30Н для текстовых  режимов и 20h для графических


Вызов этой функции приводит к тому, что экран переводится  в выбранный режим. Если старший бит AL не установлен в 1, экран очищается. Номера текстовых режимов — 0, 1, 2, 3 и 7. 0 и 1 — 16-цветные режимы 40x25 (с 25 строками по 40 символов в строке), 2 и 3 — 16-цветные режимы 80x25, 7 — монохромный режим 80x25. Мы не будем пока рассматривать графические режимы, хотя функции вывода текста на экран DOS и BIOS могут работать и в них. Существует еще много текстовых режимов с более высоким разрешением (80x43, 80x60, 132x50 и т.д.), но их номера для вызова через эту функцию различны для разных видеоадаптеров (например, режим 61h — 132x50 для Cirrus 5320 и 132x29 для Genoa 6400). Однако, если видеоадаптер поддерживает стандарт VESA BIOS Extention, в режимы с высоким разрешением можно переключаться, используя функцию 4Fh.

INT 10h, АН = 4Fh, AL = 02 — Установить SuperVGA-видеорежим

Ввод:

ВХ = номер режима в  младших 13 битах

Вывод:

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


Если бит 15 регистра ВХ установлен в 1, видеопамять не очищается. Текстовые режимы, которые можно вызвать с использованием этой функции: 80x60 (режим 108h), 132x25 (109h), 132x43 (10Ah), 132x50 (10Bh), 132x60 (10Ch).

 

1.2 Графическое программирование

 

Рассмотрим основные принципы создания графических изображений на экране для EGA-адаптеров.

Операционная система MS DOS в отличие от Windows, к сожалению, не поддерживает доступ к графическим возможностям компьютера. В BIOS есть не слишком эффективный графический интерфейс - подфункции прерывания 10Н. Из-за нее приходится программировать видеоадаптер самому. Это приводит к непереносимости программ на различных типах компьютеров. Кроме того, программировать видеоадаптер - достаточно сложная задача. Однако если вы пишите коммерческую программу, то решающее слово здесь за потребителем. Ему же необходимы: быстрота программирования, удобство пользования и совместимость.

Для языков высокого уровня существуют графические библиотеки, которые решают большинство задач, необходимых для успешной работы с графическим экраном. Кроме того, стандартные библиотеки, как правило, рассчитаны на работу с разными адаптерами и в разных графических режимах. Однако никакая библиотека не может охватить всех возможностей графических адаптеров (особенно VGA и SVGA). Кроме того, часто требуются специальные эффекты, добиться которых можно лишь, работая с адаптером напрямую.

Прежде чем перейти  к программированию на низком уровне, рассмотрим графические возможности BIOS, которые будут касаться только VGA.

Перечислим основные графические функции прерывания 1ОН.

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

Вход:

АН - О, AL- номер режима.

Режимы для  ЕGА и VGA-адаптеров изменяются в промежутке 14-19 (режимы 17-19 только для VGA).

Доступ к регистрам  палитры.

АН-10Н

AL - 0 - изменить регистры палитры.

BL-номер регистра,

ВН-цвет (6 бит). AL-1 - изменить регистры бордюра. ВН- регистр бордюра.

AL - 2 - изменить регистры палитры и бордюра.

ES:BX - 17 байт (регистры палитры 16,17-й бордюра).

AL - 3 - интенсивность.

BL - 0 интенсивный фон (16 - цветов).

BL - 1 мерцание (8 цветов + мерцание пер. плана).

Структура байта палитры  имеет следующий вид:

 

x

x

R

G

B

r

a

b


Последние два  бита в байте не используются. Биты Rr определяют интенсивность красного цвета (red), биты Gg - интенсивность зеленого цвета (green), биты ВЬ - интенсивность синего цвета (blue). Таким образом, любой цвет получается смешением трех чистых цветов, причем каждый цвет представлен с определенной интенсивностью (от 0 до 3).

Поставить точку. АН-ОСН

ВН - номер видеостраницы.

DX- строка.

СХ- столбец.

AL - значение цвета.

Читать точку.

AH-0DH.

Регистры работают аналогично предыдущему случаю, в AL возвращается цвет.

Выбрать активную страницу (переключение страниц).

АН-5

AL - номер активной страницы (для рассматриваемого нами режима их всего 2).

При запуске  программы вывод точки работает чрезвычайно медленно. То же самое можно сказать о выводе символа, поскольку символ выводится как набор точек. Однако такая функция, как смена активной страницы, работает практически мгновенно. Этот механизм часто используют в играх и мультипликации. Заметим, что в графическом режиме нет курсора в обычном понимании (мы его не видим). Однако именно в его позицию выводится символ. Причем позицию графического курсора можно изменить при помощи обычных функций установки курсора. Использование русского текста возможно лишь в том случае, если это обеспечивает используемый драйвер экрана. Как правило, хорошие графические библиотеки для языков высокого уровня содержат наборы шрифтов, а также функции управления их выводом.

а) Работа с VGA-режимами

 

Функция 00 прерывания BIOS 10h позволяет переключаться не только в текстовые режимы, использовавшиеся в предыдущих главах, но и в некоторые  графические. Эти видеорежимы стандартны и поддерживаются всеми видеоадаптерами (начиная с VGA), см. табл. 19.

Таблица 1. Основные графические режимы VGA

 

Номер режима

Разрешение

Число цветов

11h

640x480

2

12h

640x480

16

13h

320x200

256


 

Существуют еще несколько  видеорежимов, использовавшихся более  старыми видеоадаптерами CGA и EGA (с номерами от 4 до 10h).BIOS также предоставляет видеофункции чтения и записи точки на экране в графических режимах, но эти функции настолько медленно исполняются, что никогда не используются в реальных программах.

INТ 10h АН = 0Ch — Вывести точку на экран

Ввод:

АН = 0Ch 
ВН = номер видеостраницы (игнорируется для режима 13h, поддерживающего только одну страницу) 
DX = номер строки 
СХ = номер столбца 
AL = номер цвета (для режимов 10h и llh, если старший бит 1, номер цвета точки на экране будет результатом операции «исключающее ИЛИ»)

Вывод:

Никакого


INТ 10h AH = 0Dh — Считать точку с экрана

Ввод:

АН = 0Dh 
ВН = номер видеостраницы (игнорируется для режима 13h, поддерживающего только одну страницу) 
DX = номер строки 
СХ = номер столбца

Вывод:

AL = номер цвета


 

 

в) Работа с SVGA-режимами

 

В режиме VGA 320x200 с 256 цветами  для отображения видеопамяти  на основное адресное пространство используется 64 000 байт, располагающихся с адреса A000h:0000h. Дальнейшее увеличение разрешения или числа цветов приводит к тому, что объем видеопамяти превышает максимальные границы сегмента в реальном режиме (65 535 байт), а затем и размер участка адресного пространства, отводимого для видеопамяти (160 Кб, от A000h:0000h до B800h:FFFFh. С адреса C800h:0000h начинается область ROM BIOS). Чтобы вывести изображение, используются два механизма — переключение банков видеопамяти для реального режима и LFB (линейный кадровый буфер) для защищенного.

Во втором случае вся  видеопамять отображается на непрерывный  кусок адресного пространства, но начинающегося не с адреса 0A0000h, а с какого-нибудь другого адреса, так чтобы весь образ видеопамяти, который может занимать несколько мегабайтов, отобразился в один непрерывный массив. В защищенном режиме максимальный размер сегмента составляет 4 гигабайта, поэтому никаких сложностей с адресацией этого буфера не возникает. Буфер LFB можно использовать, только если видеоадаптер поддерживает спецификацию VBE 2.0 .

В реальном режиме вывод  на экран осуществляется по-прежнему копированием данных в 64-килобайтный сегмент, обычно начинающийся с адреса A000h:0000h, но эта область памяти соответствует только части экрана. Чтобы вывести изображение в другую часть экрана, требуется вызвать функцию перемещения окна (или, что то же самое, переключения банка видеопамяти), изменяющую область видеопамяти, которой соответствует сегмент A000h. Например, в режиме 640x480 с 256 цветами требуется 307 200 байт для хранения всего видеоизображения. Заполнение сегмента A000h:0000h – A000h:FFFFh приводит к закраске приблизительно 1/5 экрана, перемещение окна А на позицию 1 (или переключение на банк 1) и повторное заполнение этой же области приводит к закраске следующей 1/5 экрана, и т.д. Перемещение окна осуществляется подфункцией 05 видеофункции 4Fh или передачей управления прямо на процедуру, адрес которой можно получить, вызвав подфункцию 01, как будет показано ниже. Некоторые видеорежимы позволяют использовать сразу два таких 64-килобайтных окна, окно А и окно В, так что можно записать 128 Кб данных, не вызывая прерывания.

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