
- •Введение
- •Лабораторная работа № 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.
- •Аналогичным образом могут использоваться свойства и других классов.
Программирование режимов принтера
Для изменения режимов работы принтера и выполнения загрузки шрифтов используются специальные командные последовательности символов. Командные последовательности посылаются в принтер как обычные символы. Вы можете использовать описанные ранее функции MS-DOS или BIOS для вывода этих последовательностей.
Признак начала командной последовательности символов - байт ESC с кодом 1Bh. Вслед за этим байтом программа посылает в принтер саму командную последовательность. Длина последовательности зависит от выполняемой команды.
Первый байт командной последовательности - код выполняемой команды. Далее следует один или несколько байтов параметра команды. Некоторым командам не предшествует байт ESC (это, например, команды перевода строки, страницы или команды табуляции).
ESC "@" Инициализация принтера
Для сброса принтера в исходное состояние программа должна послать на принтер два байта - байт ESC (1Bh) и байт, соответствующий ASCII-символу "@" (40h).
07h Генерация звукового сигнала
Если послать этот байт, принтер издаст звуковой сигнал. Сигнал удобно использовать для привлечения внимания оператора, например, когда кончилась бумага.
0Dh Возврат каретки
Распечатываются все символы из буфера принтера, затем каретка (печатающая головка) возвращается к началу строки. В зависимости от переключателя конфигурации SW 2-4 может дополнительно выполняться прогон бумаги на одну строку.
0Ah Перевод строки
Когда этот символ посылается на принтер, все символы, находящиеся во внутреннем буфере принтера, распечатываются, затем каретка возвращается к началу строки и происходит подача листа вперед на одну строку.
0Ch Перевод страницы
Принтер распечатывает все символы, находившиеся в буфере, затем выполняет прогон одного листа бумаги.
ESC "x" n Выбор качества печати:
0 - низкое качество;
1 - качественный шрифт NLQ.
Для задания типа шрифта надо вывести на принтер три байта: символ ESC (1Bh), символ "x" (78h), затем код шрифта (30h...31h).
Существуют различные команды, позволяющие определить размер межстрочного интервала, расположение левой и правой границ листа, используемый для печати шрифт.
Если вас не устраивает шрифт, который записан в ПЗУ принтера (например, в нем нет русских букв), вы можете использовать команды для загрузки собственного шрифта.
Приведем пример программы, которая посылает в принтер командные последовательности и обычные символы, пользуясь функцией 05h прерывания INT 21h:
#include <dos.h>
#include <stdio.h>
main() {
char buffer[] = {
0x1b, '@', // Сбрасываем принтер в исходное состояние.
7,7,7, // Выдаем 3 раза звуковой сигнал.
0x1b, 'x','0', // Устанавливаем низкое качество печати.
'S','t','r','i','n','g',' ','1', // Печатаем строку.
0x1b, 'x','1', // Устанавливаем высокое качество печати.
'S','t','r','i','n','g',' ','2', // Печатаем строку.
0x0a, // Переводим строку.
7,7,7, // Выдаем 3 раза звуковой сигнал.
0
};
char *p;
// Выводим строку символов на принтер
for(p = buffer; *p != 0; p++) bdos(0x05, *p, 0);
}
Варианты лабораторных работ:
№ Варианта |
Задание |
1 |
Печать текста средствами BIOS |
2 |
Печать текста средствами DOS |
3 |
ESC "@" Инициализация принтера |
4 |
0Dh Возврат каретки |
5 |
0Ah Перевод строки |
6 |
0Ch Перевод страницы |
7 |
ESC "x" n Выбор качества печати |
8 |
Определение текущего шрифта |
9 |
Задания типа шрифта |
0 |
Определение расположения левой и правой границ листа |
Лабораторная работа № 9.
Определение характеристик и параметров видеоадаптера.
Цель работы: изучение методов тестирования видеоадаптера.
Использование ассемблера.
Управление выводом на терминал.
Все видеосистемы используют буфера, в которые отображаются данные для изображения на экране. Экран периодически обновляется сканированием этих данных. Размер и расположение этих буферов меняется с системой, режимом экрана, а также количеством заранее отведенной памяти. Когда в буфере хранится несколько образов экрана, то каждый отдельный образ называют дисплейной страницей.
Установка/проверка режима дисплея.
Монохромный адаптер поддерживает один режим терминала, цветной графический - семь, а EGA - двенадцать. VGA еще более сложен, поддерживая палетту из 64 цветов, графику на монохромном дисплее и вывод в 43 строки.
Hиже приведен перечень различных режимов:
Hомер Режим Адапторы
0 40*25 (320*200) B&W алфавитноцифровой цветной, PCjr, EGA
1 40*25 (320*200) цветной алфавитноцифровой цветной, PCjr, EGA
2 80*25 (640*200) B&W алфавитноцифровой цветной, PCjr, EGA
3 80*25 (640*200) цветной алфавитноцифровой цветной, PCjr, EGA
4 320*200 4-цветная графика цветной, PCjr, EGA
5 320*200 B&W графика (4 тени на PCjr) цветной, PCjr, EGA
6 640*200 B&W графика цветной, PCjr, EGA
7 80*25 (720*350) B&W алфавитноцифровой монохромный, EGA
8 160*200 16-цветный графика PCjr
9 320*200 16-цветный графика PCjr
A 640*200 4-цветный графика PCjr
B зарезервирован для EGA
C зарезервирован для EGA
D 320*200 16-цветный графика EGA
E 640*200 16-цветный графика EGA
F 640*350 4-цветная графика на монохромном EGA
10 640*350 4- или 16-цветная графика EGA
EGA разрешает иметь 8 страниц в режиме 7 - стандартном монохромном текстовом режиме. Режимы 0-6 полностью совместимы, используя память одинаковым образом. При условии, что переключатели на VGA установлены для работы с улучшенным цветным дисплеем, традиционные текстовые режимы выводятся с высоким разрешением, используя рисунок символов, состоящий из 8*14 точек, а не обычные 8*8.
Функция 0 прерывания 10H устанавливает режим дисплея. В AL должен находиться номер режима от 0 до A. Чтобы установить цветной графический режим среднего разрешения надо:
MOV AH,0 ;номер функции
MOV AL,4 ;номер требуемого режима
INT 10H ;устанавливаем режим
Для определения текущего графического режима надо использовать функцию F прерывания 10H. Прерывание возвращает номер режима в AL. Оно также дает номер текущей страницы дисплея в BH и число символов в строке в AH.
MOV AH,0FH ;номер функции
INT 10H ;получение информации о режиме дисплея
MOV MODE_NUMBER,AL ;номер режима в AL
MOV NUMBER_COLS,AH ;число символов в строке в AH
MOV CURRENT_PAGE,BH ;номер текущей страницы в BH