
- •Введение
- •Лабораторная работа № 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.
- •Аналогичным образом могут использоваться свойства и других классов.
Переключение между текстовыми страницами.
Поскольку все видеосистемы, кроме монохромного дисплея, имеют достаточно памяти для нескольких видеобуферов, то одновременно могут быть сконструированы несколько экранов, каждый из которых может быть выведен в нужный момент. Вместо того, чтобы передвигать данные в видеопамяти, монитор посылает данные из другой области видеопамяти. Число доступных страниц может меняться в зависимости от видеосистемы и режима дисплея. Приводим краткую сводку:
Режим Тип Число страниц Hачало буфера
0 алфавитно-цифровой 8 B800
1 алфавитно-цифровой 8 B800
2 алфавитно-цифровой 8 B800
3 алфавитно-цифровой 8 B800
4 графический 1 B800
5 графический 1 B800
6 графический 1 B800
7 алфавитно-цифровой 1/8 B800
8 графический переменное B800
9 графический переменное B800
A графический переменное B800
D графический 2/4/8 A000
E графический 1/2/4 A000
F графический 1/2 A000
10 графический 1/2 A000
Режимы D-10 поддерживаются EGA. Количество страниц меняется в зависимости от установленной памяти. Режимы F и 10 требуют наличия не менее 128K памяти. Режим 7 разрешает одну страницу для монохромного адаптера и 8 страниц для EGA.
При использовании страниц надо позаботиться о том, чтобы операции вывода на экран направлялись на нужную страницу. Программа не обязана выводить данные на ту страницу, которая в данный момент изображается на экране. Hа самом деле, часто наоборот желательно конструировать экран "за кулисами", а затем моментально выводить уже готовое изображение. BIOS хранит в своей области данных однобайтную переменную, указывающую, какая из страниц выводится в данный момент. Диапазон значений этой переменной от 0 до 7. Она расположена по адресу 0040:0062.
Функция 5 прерывания 10H выбирает текущую страницу дисплея для ывода. Надо просто поместить номер страницы в AL:
;---установка видимой страницы
MOV AH,5 ;номер функции
MOV AL,2 ;номер страницы (начиная с 0)
INT 10H ;устанавливаем страницу
Однако эта функция не устанавливает страницу, на которую будет дти вывод. Любое из прерываний BIOS, которые выводят на экран (функции прерывания 10H), требует чтобы номер страницы был указан в качестве входного параметра в одном из регистров. Однако все прерывания вывода на экран MS DOS пишут на текущую видимую страницу. Таким образом, для "закулисных" операций Вам необходимо пользоваться прерыванием 10H.
Для получения информации о текущей странице надо выполнить функцию F прерывания 10H, которая возвращает статус дисплея.
Hомер страницы при этом возвращается в BH.
Дисплейные страницы выбираются за счет изменения точки видео памяти, начиная с которой монитор принимает данные. Эта точка памяти устанавливается регистрами 12 (старший байт) и 13 (младший байт) микросхемы 6845, которые называются регистрами стартового адреса. Значения адресов раздела страниц для буфера, начинающегося с B800 такие:
40 символов 80 символов
страница 0 0000H 0000H
1 0400H 0800H
2 0800H 1000H
3 0C00H 1800H
4 1000H
5 1400H
6 1800H
7 1C00H
В объясняется как программировать регистры микросхемы 6845, а в содержится пример программирования стартового адреса. В последнем примере надо просто присвоить BX одно из значений вышеприведенной таблицы. Kонечно, при этом устанавливается только выводимая страница. Для записи в определенную страницу на низком уровне надо использовать одно из значений таблицы в качестве смещения в видеобуфере при прямом отображении в память.
Поскольку прямое отображение в память работает очень быстро, то иллюзия страниц может быть легко создана на монохромном дисплее. Выделите блок размером 4000 байтов для хранения страницы.
Хотя монохромный адаптер не может непосредственно читать из обычной памяти, содержимое этого буфера и видеобуфера можно обменять настолько быстро, что никто не заметит разницы. Следующая процедура обменивает содержимое этих двух областей.
;---в сегменте данных
PPAGE DW 2000 DUP(720H) ;заполняем буфер пробелами
;---пересылка между псевдостраницей и видеобуфером
MOV AX,0B000H ;указываем на видеобуфер
MOV ES,AX ;
MOV AX,SEG PPAGE ;указываем на псевдостраницу
MOV DS,AX ;
REPEAT: MOV DI,0 ;DI на начало видеобуфера
MOV SI,OFFSET PPAGE ;SI на начало псевдостраницы
CLD ;направление вперед
MOV CX,2000 ;будем пересылать 2000 слов
NEXT_WORD: MOV BX,ES:[DI] ;берем слово из видеобуфера в BX
LODSW ;слово из псевдостраницы в AX
STOSW ;слово из AX в видеобуфер
MOV DS:[DI]-2,BX ;слово из BX в псевдостраницу
LOOP NEXT_WORD ;