Главная » Ассемблер

Регистры хост-контроллера USB

Добавлено Дата: 12 July, 2011 категория: Ассемблер, Железо

Драйвер интерфейса USB управляет работой хост-контроллера через регистры. Регистры универсального хост-контроллера принято разделять на две группы: группу конфигурационных регистров PCI (USB PCI Configuration Registers) и группу регистров пространства ввода-вывода (USB Host Controller 10 Space Registers). Ниже мы будем рассматривать только регистры ввода-вывода, так как непосредственная работа с конфигурационными регистрами из прикладных программ нежелательна (может привести к «зависанию» системы).

Читать »

Функции VGA BIOS

Добавлено Дата: 12 July, 2011 категория: Ассемблер, Железо

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

Читать »

Анимация двухмерных изображений

Добавлено Дата: 10 July, 2011 категория: Ассемблер, Железо

Анимация в двухмерном режиме, то есть создание на экране иллюзии движения плоских изображений (спрайтов), также реализуется при помощи масок [1]. Однако если для неподвижного объекта (например, буквы шрифта) достаточно одной маски, то движущийся объект требует отдельную маску для каждой фазы движения в каждом из возможных направлений. Чтобы получить приличную иллюзию движения, необходимо отобразить от 8 до 12 фаз [20]. Человеческий глаз способен различать углы менее одного градуса, поэтому, чтобы создать иллюзию вращения крупного объекта или движения его по произвольным направлениям, нужно иметь по маске на каждый из возможных трехсот шестидесяти градусов поворота. Сложные объекты способны совершать разнообразные виды движений, для каждого из которых нужен собственный комплект масок. Объект типа «человек», например, может идти, ползти, прыгать, приседать, взбираться по лестнице, плыть и т. п. Механические объекты обычно проще, чем живые, — требуют меньшего количества фаз и разновидностей движения (поэтому их так любят использовать разработчики игр).

Читать »

Непосредственная работа с мышью типа MS Mouse

Добавлено Дата: 8 July, 2011 категория: Ассемблер, Железо

Рассмотрим непосредственную работу с мышью на примере манипуляторов, использующих стандартный формат MS Mouse. Процесс установки нового драйвера мыши включает целый ряд операций, которые необходимо выполнять в следующем порядке.

1.     Запретить прерывания от последовательного порта.

Читать »

Ввод информации с клавиатуры при помощи функций BIOS

Добавлено Дата: 7 July, 2011 категория: Ассемблер, Железо

Клавиатура является основным устройством ввода алфавитно-цифровой информации, а часто — и основным средством управления работой компьютера. Для ввода информации с клавиатуры можно использовать либо функции операционной системы, либо прямой опрос контроллера клавиатуры. Мы не будем рассматривать функции MS-DOS, используемые для ввода данных с клавиатуры, так как они достаточно подробно описаны в литературе [3, 10], но непригодны для сколько-нибудь серьезной работы. Функции DOS имеют два очень серьезных недостатка. Первый недостаток заключается в том, что они не позволяют полностью реализовать возможности функциональных клавиш. Второй недостаток — клавиатурные функции DOS предназначены для работы в режиме терминала (с построчным выводом информации сверху вниз и прокруткой изображения снизу вверх). В процессе считывания символа они выполняют ряд дополнительных операций, что делает весьма неудобным их использование в любом другом, не терминальном режиме.

Читать »

Вывод информации на принтер при помощи стандартных функций BIOS

Добавлено Дата: 5 July, 2011 категория: Ассемблер, Железо

Для работы с принтером предназначена группа функций BIOS, вызываемых по прерыванию Int 17h. После выполнения любой из функций данной группы в регистре АН будет возвращен код состояния

принтера, разряды которого имеют следующее значение;

•       бит 0 — признак тайм-аута (0 — нормальное состояние, 1 — ошибка тайм-аута, то есть принтер не отвечает);

Читать »

Непосредственная работа с регистрами контроллера жесткого диска

Добавлено Дата: 4 July, 2011 категория: Ассемблер, Железо

Необходимость работать напрямую с регистрами контроллера диска возникает в следующих случаях:

•       при переключении процессора в защищенный режим (прерывания DOS и BIOS становятся недоступными);

•       при работе с дисками большого (свыше 8 Гбайт) объема или нестандартного (не-DOS) формата;

Читать »

Примеры использования функций DOS

Добавлено Дата: 3 July, 2011 категория: Ассемблер, Железо

В прикладных программах чаще всего применяются функции записи и считывания файлов. Программа SaveRusFont, приведенная на листинге 6.1, записывает в текущий каталог диска текущий шрифт MS-DOS, полученный из памяти видеоконтроллера, в двоичном представлении (файл fontO.fnt) и в виде инверсного изображения в формате BMP (файл font0.bmp). Она является упрощенным вариантом программы формирования изображения стандартных американского и русского шрифтов MS-DOS, которую я использовал для создания рис. 1.1 и 1.2, приведенных в начале главы 1 «Работа с клавиатурой».

Читать »

Использование счетчика тактов в качестве таймера

Добавлено Дата: 2 July, 2011 категория: Ассемблер, Железо

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

Читать »

Контроллер прерываний

Добавлено Дата: 30 June, 2011 категория: Ассемблер, Железо

Устройства ввода информации сообщают центральному процессору о поступлении новых данных с помощью сигналов прерываний. Прерывания от клавиатуры, мыши PS/2-типа и других периферийных устройств, прежде чем поступить в процессор, проходят через контроллер прерываний, где подвергаются предварительной обработке. Контроллер позволяет управлять приоритетами, прохождением сигналов и адресами векторов прерываний.

Читать »

Организация видеопамяти в режимах типа DirectDraw

Добавлено Дата: 27 June, 2011 категория: Ассемблер, Железо

В режимах группы DirectDraw (HiColor и TrueColor) информация поступает на цифро-аналоговые преобразователи непосредственно из видеопамяти. Соответственно, красная, зеленая и синяя составляющие цвета точки представлены отдельными полями в выделенной для хранения точки области видеопамяти (от 2 до 4 байт на точку).

Читать »

Функции PCI BIOS

Добавлено Дата: 26 June, 2011 категория: Ассемблер, Железо

Поскольку конфигурационное пространство не имеет привязки к какой-либо определенной области адресного пространства компьютера, доступ к нему связан с определенными трудностями. С целью упрощения работы с устройствами PCI в BIOS персональных компьютеров были внесены специальные дополнительные функции. Доступ к функциям PCI BIOS при 16-разрядном вызове выполняется через функцию Blh прерывания lAh. Для 32-разрядных вызовов используется 32-разрядная точка входа защищенного режима. используют регистры процессора для передачи аргументов и получения результатов. При успешном выполнении

Читать »

Основные типы графических режимов

Добавлено Дата: 24 June, 2011 категория: Ассемблер, Железо

Современные видеоконтроллеры поддерживают разнообразные текстовые и графические режимы, различающиеся разрешением, палитрой используемых цветов, частотой кадровой развертки и т. д. Текстовые режимы различают по разрешению (числу отображаемых символов по горизонтали и вертикали) и цветовой палитре (возможен монохромный или 16-цветный режим).

Читать »

Поиск устройства PCI по коду класса

Добавлено Дата: 23 June, 2011 категория: Ассемблер, Железо

Поиск устройства определенного типа можно осуществлять по коду класса. Код класса состоит из трех байтов (рис. 3.3): старший байт задает базовый класс (Base Class), средний байт — подкласс (Sub- Class), младший байт — интерфейс (Interface). В таблице 3.3 приведен перечень базовых классов устройств PCI, а табл. 3.4 содержит полное описание кодов классов.

Читать »

Рисование линий при линейной адресации памяти

Добавлено Дата: 21 June, 2011 категория: Ассемблер, Железо

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

для переключения страниц прерываний VESA BIOS: при рисовании прямых под большим углом к горизонтали переключение приходится осуществлять через каждые несколько десятков точек. Переключение через регистры видеоконтроллера могут выполнять только Windows-драйверы, написанные программистами фирмы-изготови- теля, поскольку документация контроллера доступна только для них. Драйверы для других операционных систем обычно не предоставляются, и, следовательно, вывод линий осуществляется в режиме сегментации очень медленно.

Читать »