
- •Введение
- •Лабораторная работа № 1. Создание программы определения характеристик центрального процессора.
- •Определение параметров процессора на аппаратном уровне.
- •Лабораторная работа № 2.
- •Конфигурация персонального компьютера
- •Cmos-память и конфигурация компьютера
- •32H Текущее столетие
- •Использование bios для определения конфигурации
- •Лабораторная работа 3. Тестирование оптических накопителей.
- •Использование I/o Control Codes.
- •Использование Windows Management Instrumentation (wmi).
- •Порты контроллера накопителей на гибких дисках
- •Порт 3f2h.
- •Порт 3f4h.
- •Команды управления накопителями
- •Перечень команд контpоллеpа нгмд
- •Структура байтов состояния
- •Формат дорожки
- •Отличия контроллера для ат-подобных пэвм
- •Порт 3f7h.
- •Лабораторная работа № 5. Диагностика контроллера накопителей на жестких дисках.
- •Контроллер жестких дисков для хт-подобных пэвм
- •Порты ввода-вывода
- •Порт 320h.
- •Порт 321h.
- •Порт 322h.
- •Порт 323h.
- •Общий формат команды и терминология
- •Описание команд Проверка готовности накопителя (класс 0, опкод 0).
- •Рекалибровать (класс 0, опкод 1).
- •Запрос состояния (класс 0, опкод 3).
- •Форматирование накопителя (класс 0, опкод 4).
- •Проверка секторов (класс 0, опкод 5).
- •Форматирование дорожки (класс 0, опкод 6).
- •Форматирование дефектной дорожки (класс 0, опкод 7).
- •Чтение секторов (класс 0, опкод 8).
- •Запись секторов (класс 0, опкод 0Ah).(*)
- •Поиск цилиндра по номеру (класс 0, опкод 0Ch).(*)
- •Чтение внутреннего озу контроллера (класс 0, опкод 0Eh).(*)
- •Запись внутреннего озу контроллера (класс 0, опкод 0Fh).(*)
- •Диагностика внутреннего озу контроллера (класс 7,опкод 0).(*)
- •Тест устройства (класс 7, опкод 3).
- •Расширенный тест контроллера (класс 0, опкод 4).
- •Считывание без контроля (класс 7, опкод 5).
- •Запись без контроля (класс 7, опкод 6).
- •Разметка диска
- •Контроллер жестких дисков для ат-подобных пэвм
- •Описание портов ввода-вывода Порт 1f0h
- •Порт 1f1h.
- •Система команд
- •Лабораторная работа №6. Программное тестирование портов для работы с клавиатурой
- •Аппаратное прерывание клавиатуры
- •Средства bios для работы с клавиатурой
- •Чтение символа с ожиданием
- •Проверка буфера на наличие в нем символов
- •Получение состояния переключающих клавиш
- •Установка временных характеристик клавиатуры
- •Запись символов в буфер клавиатуры
- •Чтение символа с ожиданием для 101-клавишной клавиатуры
- •Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
- •Получение состояния переключающих клавиш для 101-клавишной клавиатуры
- •Лабораторная работа № 7. Тестирование и контроль оперативной памяти.
- •Алгоритм определения объёма оперативной памяти.
- •Сущность тестирования памяти.
- •Алгоритм диагностирования памяти в тесте Memtest86.
- •Лабораторная работа № 8. Программирование принтера. Цель работы: изучение методов программирования принтера.
- •Средства ms-dos для работы с принтером
- •Программирование режимов принтера
- •Установка атрибутов/цветов символов.
- •Сдвиг экрана и страницы.
- •Вертикальный сдвиг текстового экрана.
- •Сдвиг текстового экрана горизонтально.
- •Переключение между текстовыми страницами.
- •Сдвиг между страницами текста.
- •Использование wmi.
- •Аналогичным образом могут использоваться свойства и других классов.
Запись символов в буфер клавиатуры
На входе: AH = 05h;
CL = ASCII-код записываемого символа;
CH = скан-код записываемого символа, или 0.
На выходе: AL = 0 - запись выполнена успешно;
1 - буфер клавиатуры переполнен.
С помощью этой функции можно вставить символы в буфер клавиатуры, как будто они были введены оператором.
Приведенная программа записывает в буфер клавиатуры пять символов '*'. Запустите ее и посмотрите на системное приглашение. Вы увидите что-нибудь похожее на C:\>*****.
#include <stdio.h>
#include <dos.h>
void main(void);
void main(void) {
union REGS rg;
int i;
for(i=0; i<5; i++) {
rg.h.ah = 5;
rg.h.cl = '*';
rg.h.ch = 9;
int86(0x16, &rg, &rg);
}
}
Чтение символа с ожиданием для 101-клавишной клавиатуры
Функция 10h полностью аналогична функции 00h, но она предназначена для работы с клавиатурой, имеющей 101 клавишу.
Приведем формат вызова функции:
На входе: AH = 10h.
На выходе: AL = ASCII-код символа или 0, если AH содержит
расширенный ASCII-код символа;
AH = скан-код или расширенный ASCII-код
символа, если AL=0.
Функция определена для BIOS, изготовленной не раньше 15 декабря 1985 года.
Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
На входе: AH = 11h.
На выходе: ZF = 0, если в буфере имеется код нажатой
на клавиатуре клавиши;
ZF = 1, если буфер клавиатуры пуст;
AL = ASCII-код символа или 0, если AH содержит
расширенный ASCII-код символа;
AH = скан-код или расширенный ASCII-код
символа, если AL=0.
Функция 11h полностью аналогична функции 01h, но она предназначена для работы с клавиатурой, имеющей 101 клавишу.
Получение состояния переключающих клавиш для 101-клавишной клавиатуры
На входе: AH = 12h.
На выходе: AL = Байт состояния переключающих клавиш.
Функция возвращает в регистре AL состояние переключающих клавиш (Shift, Ctrl, Alt, ScrollLock, NumLock, CapsLock, Ins):
Биты Значение
0 Нажата левая клавиша Shift вместе с Ctrl.
1 Нажата левая клавиша Shift вместе с Alt.
2 Нажата правая клавиша Shift вместе с Ctrl.
3 Нажата правая клавиша Shift вместе с Alt.
4 Нажата клавиша ScrollLock.
5 Нажата клавиша NumLock.
6 Нажата клавиша CapsLock.
7 Нажата клавиша SysReq.
Функция 12h аналогична функции 02h, но она предназначена для работы с клавиатурой, имеющей 101 клавишу и имеет другой формат байта состояния.
Варианты лабораторных работ:
№ Варианта |
Задание |
1 |
Блокировка клавиатуры на определённый промежуток времени. |
2 |
Получение состояния переключающих клавиш(используя порты) |
3 |
Установка состояния переключающих клавиш(используя порты) |
4 |
Установка временных характеристик клавиатуры (используя порты) |
5 |
Чтение символа с ожиданием |
6 |
Проверка буфера на наличие в нем символов |
7 |
Получение состояния переключающих клавиш (используя прерывание) |
8 |
Установка состояния переключающих клавиш (используя прерывание) |
9 |
Установка временных характеристик клавиатуры (используя прерывание) |
0 |
Запись символов в буфер клавиатуры |