Конфигурация персонального компьютера


Введение
ВведениеПрограммисты, использующие операционную систему MS-DOS, часто вынуждены работать с различными устройствами компьютера на уровне команд ввода/вывода. Это связано прежде всего с тем, что MS-...
1.Конфигурация персонального компьютера
1. Конфигурация персонального компьютера 1.1. Определение типа компьютера и версии BIOS1.2. Установка перемычек на материнской плате1.3. КМОП-память и конфигурация компьютера1.4. Использовани...
1.1. Определение типа компьютера и версии BIOS
У вас есть две возможности определить модель компьютера и получить некоторую информацию о конфигурации - прочитать эту информацию из ячеек ПЗУ BIOS, или вызвать одну из функций прерывания INT15h,...
1.2. Установка перемычек на материнской плате
Для правильной установки перемычек, находящихся на материнской плате и платах контроллеров периферийных устройств вам необходима соответствующая документация. Это руководства пользователя, поставл...
1.3. КМОП-память и конфигурация компьютера
Назначение некоторых ячеек КМОП-памяти мы уже рассматривали в разделе, посвященному конфигурации дисковой подсистемы. В этом разделе мы расскажем о назначении остальных ячеек. В КМОП-памяти хранит...
00H- 0Dh - область часов реального времени
00h - 0Dh - область часов реального времениЯчейки с адресами 00h - 0Dh используются часами реального времени. Часам реального времени будет посвящена отдельная глава, поэтому сейчас...
0Eh - байт состояния диагностики
0Eh - байт состояния диагностикиБайт состояния диагностики (расположенный в КМОП-памяти по адресу 0Eh) содержит результаты выполнения диагностики при включении питания компьютера. Выполнив анализ...
0Fh - байт состояния отключения
0Fh - байт состояния отключенияБайт состояния отключения 0Fh используется процессорами 80286, 80386 и 80486 для определения способа возврата из защищенного режима в реальный после аппаратного сбро...
10H - тип используемых флоппи-дисков;
10h - тип используемых флоппи-дисков;Младшая и старшая тетрады этого байта описывают соответственно второй и первый НГМД: 0000 - дисковод не установлен; 0001 - дисковод на 360К; 0010 - дисковод на...
11H - зарезервировано для AT, тип НМД для PS/2
11h - зарезервировано для AT, тип НМД для PS/2В компьютерах PS/2 ячейки КМОП-памяти с адресами 11h и 12h используются для хранения типов, соответственно, первого и второго НМД....
12H - типы первого и второго НМД
12h - типы первого и второго НМДЭтот байт разделен на две тетрады аналогично байту, описывающему НГМД. Однако в тетраде можно закодировать только 16 различных значений, а типов НМД значительно бол...
13H - зарезервировано
13h - зарезервированоЭта ячейка КМОП-памяти зарезервирована для дальнейшего развития системы....
14H - конфигурация оборудования
14h - конфигурация оборудованияВ этом байте находится информация о количестве установленных НГМД, о наличии арифметического сопроцессора 80287 или 80387 и о типе используемого дисплейного контролл...
15H-16h - объем основной памяти
15h-16h - объем основной памятиЯчейка 15h содержит младший байт, а ячейка 16h - старший байт объема основной памяти. Например: 0100h - 256K 0200h - 512K 0280h - 640K...
17H-18h - объем дополнительной памяти
17h-18h - объем дополнительной памятиЯчейки 17h и 18h содержат, соответственно, младший и старший байты размера дополнительной памяти (расположенной выше границы 1 М) в килобайтах....
19H-1Ah типы первого и второго НМД
19h-1Ah типы первого и второго НМДЭти ячейки содержат типы, соответственно, первого и второго НМД, если соответствующий тип имеет значение, большее 15 (см. описание ячейки 12h)....
1Bh-2Dh - зарезервировано
1Bh-2Dh - зарезервированоЭти ячейки КМОП-памяти зарезервированы для дальнейшего развития системы. 2Eh-2Fh - контрольная сумма ячеек 10h - 20h Для ячеек КМОП-памяти с адресами от 10h до 20h при...
30H-31h - объем дополнительной памяти
30h-31h - объем дополнительной памятиЯчейки 30h и 31h содержат, соответственно, младший и старший байты размера дополнительной памяти (расположенной выше границы 1 М) в килобайтах. Эта информация...
32H Текущее столетие
32h Текущее столетиеВ машинах IBM AT этот байт содержит текущее столетие в двоично-десятичном коде, т.е. 19 столетие записано как 19h. PS/2 использует эту ячейку вместе с ячейкой 33h для хранения...
33H - различная информация
33h - различная информацияДля IBM AT этот байт используется программой SETUP....
34H-3Fh - зарезервировано
34h-3Fh - зарезервированоЭто поле вы можете использовать по своему усмотрению, например, хранить здесь пароль. PS/2 использует ячейку с адресом 37h для хранения номера текущего столетия. Ячейки 38...
1.4. Использование BIOS для определения конфигурации
Как мы уже говорили, BIOS в процессе инициализации опрашивает состояние перемычек и анализирует содержимое КМОП-памяти (на тех машинах, где эта память установлена). После анализа BIOS записывает в...
1.5. Определение типа процессора
Мы уже говорили о том, для чего может потребоваться программе определять тип используемого процессора. Для определения типа процессора можно использовать следующую программу: .MODEL tiny...
2.КЛАВИАТУРА
2. КЛАВИАТУРА2.1. Принципы работы клавиатуры2.2. Порты для работы с клавиатурой2.3. Аппаратное прерывание клавиатуры2.4. Средства BIOS для работы с клавиатурой2.5. Средства MS-DOS для работы...
2.1. Принципы работы клавиатуры
Клавиатура выполнена, как правило, в виде отдельного устройства, подключаемого к компьютеру тонким кабелем. Малогабаритные компьютеры Lap-Top используют встроенную клавиатуру. Что же находится вну...
2.2. Порты для работы с клавиатурой
Для работы с клавиатурой типа PC/XT используются порты с адресами 60h и 61h. Порт 60h при чтении содержит скан-код последней нажатой клавиши. Порт 61h управляет не только клавиатурой, но и другими...
2.3. Аппаратное прерывание клавиатуры
Клавиатура подключена к линии прерывания IRQ1. Этой линии соответствует прерывание INT09h. Клавиатурное прерывание обслуживается модулями BIOS. Драйверы клавиатуры и резидентные программы могут ор...
2.4. Средства BIOS для работы с клавиатурой
Набор функций для работы с клавиатурой, предоставляемый в распоряжение программиста прерыванием BIOS INT 16h, включает в себя функции для выборки кода нажатого символа из буфера с ожиданием н...
2.4.1. Чтение символа с ожиданием
2.4.1. Чтение символа с ожиданиемФункция 00h выполняет чтение кода символа из буфера клавиатуры, если он там есть. Если буфер клавиатуры пуст, программа переводится в состояние ожидания до тех пор...
2.4.2. Проверка буфера на наличие в нем символов
2.4.2. Проверка буфера на наличие в нем символов На входе: AH = 01h. На выходе: ZF = 0, если в буфере имеется код нажатой на клавиатуре клавиши; ZF = 1, если буфер клавиат...
2.4.3. Получение состояния переключающих клавиш
2.4.3. Получение состояния переключающих клавиш На входе: AH = 02h На выходе: AL = Байт состояния переключающих клавиш Функция возвращает в регистре AL состояние переключающих клавиш (Shift,...
2.4.4. Установка временных характеристик клавиатуры
2.4.4. Установка временных характеристик клавиатуры На входе: AH = 03h; AL = 05h; BL = Период автоповтора (количество повторов за одну секунду): 0 - 30.0;...
2.4.5. Запись символов в буфер клавиатуры
2.4.5. Запись символов в буфер клавиатуры На входе: AH = 05h; CL = ASCII-код записываемого символа; CH = скан-код записываемого символа, или 0. На выходе: AL = 0 - запись вып...
2.4.6 Чтение символа с ожиданием для 101-клавишной клавиатуры
2.4.6 Чтение символа с ожиданием для 101-клавишной клавиатурыФункция 10h полностью аналогична функции 00h, но она предназначена для работы с клавиатурой, имеющей 101 клавишу. Приведем формат вызов...
2.4.7. Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
2.4.7. Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры На входе: AH = 11h. На выходе: ZF = 0, если в буфере имеется код нажатой на клавиатуре клавиши;...
2.4.8. Получение состояния переключающих клавиш для 101-клавишной клавиатуры
2.4.8. Получение состояния переключающих клавиш для 101-клавишной клавиатуры На входе: AH = 12h. На выходе: AL = Байт состояния переключающих клавиш. Функция возвращает в регистре AL состоян...
2.5. Средства MS-DOS для работы с клавиатурой
К сожалению, MS-DOS не предоставляет программам каких-либо существенных дополнительных возможностей по сравнению с функциями прерывания BIOS INT16h. Поэтому многие программы работают с клавиатурой...
2.5.1. Буферизованный ввод с эхо-выводом
2.5.1. Буферизованный ввод с эхо-выводом На входе: AH = 01h. На выходе: AL = ASCII-код символа или 0. Если регистр содержит 0, то следующий вызов этой же функции возвратит в...
2.5.2. Буферизованный ввод без эхо-вывода
2.5.2. Буферизованный ввод без эхо-вывода На входе: AH = 08h. На выходе: AL = ASCII-код символа или 0. Если регистр содержит 0, то следующий вызов этой же функции возвратит в...
2.5.3. Нефильтрованный ввод без эхо-вывода
2.5.3. Нефильтрованный ввод без эхо-вывода На входе: AH = 07h. На выходе: AL = ASCII-код символа или 0. Если регистр содержит 0, то следующий вызов этой же функции возвратит...
2.5.4. Ввод/вывод на консоль
2.5.4. Ввод/вывод на консоль На входе: AH = 06h; DL = 0FFh - для ввода символа с консоли; или: DL = код символа, не равный 0FFh - для вывода символа на консоль...
2.5.5. Ввод строки символов
2.5.5. Ввод строки символов На входе: AH = 0Ah; DS:DX = адрес буфера для ввода строки; На выходе: Буфер содержит введенную строку. Функция проверяет комбинации клавиш...
2.5.6. Проверка состояния стандартного ввода
2.5.6. Проверка состояния стандартного ввода На входе: AH = 0Bh. На выходе: AL = 0FFh, если в буфере имеется код нажатой на клавиатуре клавиши; AL = 0, если буфер клави...
2.5.7. Сброс буфера клавиатуры
2.5.7. Сброс буфера клавиатуры На входе: AH = 0Ch; AL = 1, 6, 7, 8 или 0Ah. На выходе: не опеределены. Функция очищает клавиатурный буфер, затем вызывает клавиатурную функцию MS-DOS,...
2.6. Клавиатурные функции библиотеки Microsoft C
Стандартные библиотеки трансляторов Microsoft QuickC и C 6.0 содержат набор функций, предназначенных для работы с клавиатурой. Эти функции повторяют и немного дополняют возможности функций MS-DOS...
3.МЫШЬ
3. МЫШЬ3.1. Как устроена мышь?3.2. Драйверы мыши в MS-DOS3.3. Прерывание для обслуживания мышиВместе с появлением персональных компьютеров возникло и получило огромную популярность графическо...
3.1. Как устроена мышь?
Мышь - это небольшая коробочка с двумя или тремя клавишами, которая соединяется с компьютером тонким кабелем:Рисунок 2. Внешний вид мышиСверху на корпусе расположены кнопки. Обычно их две или три....
3.2. Драйверы мыши в MS-DOS
Как это не странно, ни BIOS, ни MS-DOS версий вплоть до 4.01 не содержат программной поддержки мыши. Для того, чтобы задействовать это устройство, вам надо использовать драйвер мыши или специальну...
3.3. Прерывание для обслуживания мыши
Драйвер мыши, независимо от того, реализован он через устанавливаемый драйвер или резидентную программу, определяет обработчик прерывания INT 33h. Этот обработчик выполняет все операции, связ...
1. Инициализация мыши
3.3.1. Инициализация мыши На входе: AX = 0000h. На выходе: AX = состояние мыши: 0000h - драйвер мыши или мышь не установлены; FFFFh - драйвер и мышь установлен...
3.3.2. Включить курсор мыши
3.3.2. Включить курсор мыши На входе: AX = 0001h. На выходе: регистры не используются. Для управления видимостью курсора драйвер мыши использует внутренний счетчик. Этот счетчик можно увеличи...
3.3.3. Выключить курсор мыши
3.3.3. Выключить курсор мыши На входе: AX = 0002h. На выходе: регистры не используются. Эта функция уменьшает на единицу счетчик видимости курсора. Если содержимое счетчика становится равным...
3.3.4. Определить положение курсора
3.3.4. Определить положение курсора На входе: AX = 0003h. На выходе: BX = состояние клавиш мыши: бит 0 = 1 - нажата левая клавиша; бит 1 = 1 - нажата правая клавиша;...
3.3.5. Установить курсор
3.3.5. Установить курсор На входе: AX = 0004h; CX = устанавливаемая координата X (по горизонтали); DX = устанавливаемая координата Y (по вертикали). На выходе:...
3.3.6. Определить положение курсора при нажатии клавиши
3.3.6. Определить положение курсора при нажатии клавиши На входе: AX = 0005h; BX = клавиша, при нажатии которой запоминается состояние мыши: 0 - левая;...
3.3.7. Определить положение курсора при отпускании клавиши
3.3.7. Определить положение курсора при отпускании клавиши На входе: AX = 0006h; BX = клавиша, при отпускании которой запоминается состояние мыши: 0 - левая;...
3.3.8. Задать диапазон движения курсора по горизонтали
3.3.8. Задать диапазон движения курсора по горизонтали На входе: AX = 0007h; CX = минимальная координата X (по горизонтали); DX = максимальная координата X. На выходе:...
3.3.9. Задать диапазон движения курсора по вертикали
3.3.9. Задать диапазон движения курсора по вертикали На входе: AX = 0008h; CX = минимальная координата Y (по вертикали); DX = максимальная координата Y. На выходе: Ре...
3.3.10. Задать форму курсора в графическом режиме
3.3.10. Задать форму курсора в графическом режиме На входе: AX = 0009h; BX = номер позиции точки-указателя графического курсора (от -16 до 16); CX = номер строки точки-у...
3.3.11. Задать форму курсора в текстовом режиме
3.3.11. Задать форму курсора в текстовом режиме На входе: AX = 000Ah; BX = тип курсора: 0 - определяемый программно; 1 - определяемый аппаратно; CX = маска экр...
3.3.12. Определить содержимое счетчиков перемещения
3.3.12. Определить содержимое счетчиков перемещения На входе: AX = 000Bh. На выходе: CX = перемещение по горизонтали с момента последнего вызова функции; DX = перемещение по...
3.3.13. Установить драйвер событий
3.3.13. Установить драйвер событий На входе: AX = 000Ch; CX = маска вызова: бит 0 - вызов при перемещении мыши; бит 1 - вызов при нажатии левой клавиши; бит 2 - в...
3.3.14. Включить эмуляцию светового пера
3.3.14. Включить эмуляцию светового пера На входе: AX = 000Dh. На выходе: Регистры не используются. Если ваша программа использует световое перо (например, она написана на языке Бейсик и вы...
3.3.15. Выключить эмуляцию светового пера
3.3.15. Выключить эмуляцию светового пера На входе: AX = 000Eh. На выходе: Регистры не используются. Эта функция выключает режим эмуляции светового пера....
3.3.16. Задать скорость перемещения курсора мыши
3.3.16. Задать скорость перемещения курсора мыши На входе: AX = 000Fh; CX = количество миков на 8 точек по горизонтали; DX = количество миков на 8 точек по вер...
3.3.17. Установить область исключения для курсора
3.3.17. Установить область исключения для курсора На входе: AX = 0010h; CX, DX = координаты (X, Y) верхнего левого угла области исключения; SI, DI = координаты (X, Y...
3.3.18. Задать увеличенный графический курсор (PC MOUSE)
3.3.18. Задать увеличенный графический курсор (PC MOUSE) На входе: AX = 0012h; BH = ширина курсора в словах; CH = количество строк в изображении курсора; BL = номер пози...
3.3.19. Определить порог удвоения скорости
3.3.19. Определить порог удвоения скорости На входе: AX = 0013h. На выходе: DX = значение порога удвоения, мики в секунду. Если вы перемещаете мышь со скоростью, превышающей порог удвоения,...
3.3.20. Заменить драйвер событий
3.3.20. Заменить драйвер событий На входе: AX = 0014h; CX = маска вызова: бит 0 - вызов при перемещении мыши; бит 1 - вызов при нажатии левой клавиши; бит 2 - вызо...
3.3.21. Определить размер буфера состояния драйвера
3.3.21. Определить размер буфера состояния драйвера На входе: AX = 0015h. На выходе: BX = размер буфера, требующийся для хранения состояния драйвера мыши. Если вам требуется временно...
3.3.22. Сохранить состояние драйвера
3.3.22. Сохранить состояние драйвера На входе: AX = 0016h; ES:DX = адрес буфера для записи состояния драйвера. На выходе: Не используются. Функция позволяет записать состоя...
3.3.23. Восстановить состояние драйвера
3.3.23. Восстановить состояние драйвера На входе: AX = 0017h; ES:DX = адрес буфера, содержащего состояние драйвера. На выходе: Не используются. Функция позволяет восстан...
3.3.24. Установить альтернативный драйвер событий
3.3.24. Установить альтернативный драйвер событий На входе: AX = 0018h; CX = маска вызова: бит 0 - вызов при перемещении мыши; бит 1 - вызов при нажатии левой клавиши;...
3.3.25. Получить адрес альтернативного драйвера событий
3.3.25. Получить адрес альтернативного драйвера событий На входе: AX = 0019h; CX = маска событий, для которой требуется получить адрес драйвера (формат маски соответст...
3.3.26. Установить чувствительность мыши
3.3.26. Установить чувствительность мыши На входе: AX = 001Ah; BX = горизонтальная чувствительность в миках на точку (пиксель); CX = вертикальная чувствительность в...
3.3.27. Определить чувствительность мыши
3.3.27. Определить чувствительность мыши На входе: AX = 001Bh. На выходе: BX = горизонтальная чувствительность в миках на точку (пиксель); CX = вертикальная чувствительность...
3.3.28. Установить частоту прерываний для Inport Mouse
3.3.28. Установить частоту прерываний для Inport Mouse На входе: AX = 001Ch BX = код скорости прерываний: 1 - нет прерываний; 2 - 30 прерываний в секунду; 4 -...
3.3.29. Установить номер видеостраницы
3.3.29. Установить номер видеостраницы На входе: AX = 001Dh; BX = номер видеостраницы. На выходе: Не используются. Данная функция задает номер видеостраницы, на которой будет отображать...
3.3.30. Определить номер видеостраницы
3.3.30. Определить номер видеостраницы На входе: AX = 001Eh. На выходе: BX = номер видеостраницы. Функция возвращает номер видеостраницы, на которой в настоящее время отображается курсор мы...
3.3.31. Отключить драйвер мыши
3.3.31. Отключить драйвер мыши На входе: AX = 001Fh. На выходе: AX = результат выполнения: 001Fh - драйвер отключен; FFFFh - отключение невозможно; ES:DX = век...
3.3.32. Восстановить драйвер мыши
3.3.32. Восстановить драйвер мыши На входе: AX = 0020h. На выходе: Не используются. Функция восстанавливает связь между мышью и драйвером, отключенную вызовом функции 1Fh....
3.3.33. Сбросить драйвер мыши
3.3.33. Сбросить драйвер мыши На входе: AX = 0021h. На выходе: AX = результат: 0021h - драйвер сброшен успешно; FFFFh - невозможно сбросить драйвер (на...
3.3.34. Определить тип мыши
3.3.34. Определить тип мыши На входе: AX = 0024h. На выходе: BH = верхний (major) номер версии драйвера; BL = нижний (minor) номер версии драйвера; CH = тип мыши: 1 -...
4.ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ
4. ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ 4.1. Прочитать показания часов реального времени4.2. Установить часы реального времени4.3. Прочитать дату из часов реального времени4.4. Установить дату в часах...
4.1. Прочитать показания часов реального времени
На входе: AH = 02h.На выходе: CH = часы в BCD-формате (например, 13h означает 13 часов); CL = минуты в BCD-формате; DH = секунды в BCD-формате; CF = CY = 1, если...
4.2. Установить часы реального времени
На входе: AH = 03h; CH = часы в BCD-формате (например, 13h означает 13 часов); CL = минуты в BCD-формате; DH = секунды в BCD-формате; DL = 1, если необходим...
4.3. Прочитать дату из часов реального времени
На входе: AH = 04h.На выходе: CH = столетие в BCD-формате ; CL = год в BCD-формате (например, CX=1991h означает 1991 год); DH = месяц в BCD-формате; DL = число в...
4.4. Установить дату в часах реального времени
На входе: AH = 05h; CH = столетие в BCD-формате ; CL = год в BCD-формате (например, CX=1991h означает 1991 год); DH = месяц в BCD-формате; DL = число в BCD-...
4.5. Установить будильник
На входе: AH = 06h; CH = часы в BCD-формате; CL = минуты в BCD-формате; DH = секунды в BCD-формате. На выходе: CF = CY = 1, если часы реального времени не уста...
4.6. Сброс будильника
На входе: AH = 07h. На выходе: не используются. Эта функция позволяет сбросить будильник, например, для того чтобы установить его заново на другое время....
4.7. Использование часов реального времени
Вы можете использовать часы реального времени для решения двух задач. Во-первых, часы позволяют определить текущую дату и время с точностью до секунды. Во-вторых, будильник можно использовать для...
5.СИСТЕМНЫЙ ТАЙМЕР
5. СИСТЕМНЫЙ ТАЙМЕР5.1. Микросхемы таймера 8253/82545.2. Программирование таймера на уровне портов5.3. Средства BIOS для работы с таймером5.4. Средства MS-DOS для работы с таймером5.5. Таймер...
5.1. Микросхемы таймера 8253/8254
Таймеры 8253 и 8254 состоят из трех независимых каналов, или счетчиков. Каждый канал содержит регистры: состояния канала RS (8 разрядов); управляющего слова RSW (8 разрядов); буферный регистр OL (...
5.2. Программирование таймера на уровне портов
Таймеру соответствуют четыре порта ввода/вывода со следующими адресами: 40h - канал 0; 41h - канал 1; 42h - канал 2; 43h - управляющий регистр. Приведем формат управляющего регистра: 7 6 5 4 3 2 1...
5.3. Средства BIOS для работы с таймером
Для работы с таймером (точнее говоря, для работы с каналом 0 таймера) BIOS содержит две функции прерывания INT1Ah. Они позволяют прочитать текущее содержимое счетчика и изменить его. Функция 00h п...
5.4. Средства MS-DOS для работы с таймером
MS-DOS использует четыре функции прерывания INT 21h для работы с системным таймером. Эти функции позволяют узнать и установить текущие дату и время. MS-DOS версии 3.30 и более поздних версий...
5.5. Таймер и музыка
Одно из наиболее распространенных применений таймера - генерация звуковых сигналов и воспроизведение музыки. Таймер позволяет воспроизводить музыку в фоновом режиме, т.е. во время работы программы...
5.6. Генерация случайных чисел
Последнее, что мы сделаем с таймером - научимся получать от него случайные числа. Для генерации случайных чисел лучше всего использовать канал 2 в режиме 3. В регистр счетчика канала мы занесем зн...
6.ПОРТ ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ ДАННЫХ
6. ПОРТ ПОСЛЕДОВАТЕЛЬНОЙ ПЕРЕДАЧИ ДАННЫХ6.1. Основные понятия и термины6.2. Аппаратная реализация6.3. Порты асинхронного адаптера6.4. Поддержка асинхронного адаптера в BIOS6.5. Программирован...
6.1. Основные понятия и термины
Последовательная передача данных означает, что данные передаются с использованием единственной линии. При этом биты байта данных передается по очереди с использованием одного провода. Для синхрони...
6.2. Аппаратная реализация
Компьютер может быть оснащен одним или двумя портами последовательной передачи данных. Эти порты расположены либо на материнской плате, либо на отдельной плате, вставляемой в слоты расширения мате...
6.3. Порты асинхронного адаптера
На этапе инициализации системы модуль POST BIOS тестирует имеющиеся асинхронные адаптеры и инициализирует первые два. Их базовые адреса располагаются в области данных BIOS начиная с адреса 0000:04...
Порт 3F8h.
Порт 3F8h.Этот порт соответствует регистру передаваемых данных. Для передачи в порт 3F8h необходимо записать передаваемый байт данных. После приема данных от внешнего устройства они могут быть про...
Порт 3F9h.
Порт 3F9h.Порт используется либо как регистр управления прерываниями от асинхронного адаптера либо (после вывода в порт 3F9h байта с установленным в 1 старшим битом) для вывода значения старшего б...
Порт 3FAh.
Порт 3FAh.Регистр идентификации прерывания. Считывая его содержимое, программа может определить причину прерывания. Формат регистра: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ LT+-+-+-+T+T+T+T-...
Порт 3FBh.
Порт 3FBh.Управляющий регистр, доступен по записи и чтению. 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ L=¦ ¦ L=¦= Длина слова в битах: ¦ ¦ ¦ ¦ ¦ 00 - 5 бит; ¦ ¦ ¦...
Порт 3FCh.
Порт 3FCh.Регистр управления модемом. Управляет состоянием выходных линий DTR, RTS , линий, специфических для модемов OUT1 и OUT2, для запуска диагностики соединенных вместе замкнутых входе и выхо...
Порт 3FDh.
Порт 3FDh.Регистр состояния линии. 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ L= Данные получены и готовы для чтения, ¦ ¦ ¦ ¦ ¦ ¦ ¦ сбрасывается при чтении...
Порт 3FEh.
Порт 3FEh.Регистр состояния модема. 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ L= линия CTS изменила состояние ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L=== линия DSR измен...
6.4. Поддержка асинхронного адаптера в BIOS
Мы опишем функции BIOS, облегчающие обслуживание двух асинхронных адаптеров, COM1 и COM2. Эти функции доступны через прерывание INT14h. Первая функция предназначена для инициализации портов асинхр...
6.5. Программирование асинхронного адаптера
К сожалению, MS-DOS не содержит сколько-нибудь серьезной поддержки асинхронного адаптера. Две функции прерывания INT 21h с номерами 3 и 4 предназначены для чтения и записи байтов через асинхр...
6.5.1. Инициализация асинхронного адаптера
6.5.1. Инициализация асинхронного адаптера Первое, что должна сделать программа, работающая с асинхронным адаптером - установить протокол обмена и скорость передачи данных. После загрузки операцио...
6.5.2. Передача данных
6.5.2. Передача данныхПеред записью байта данных в регистр передатчика необходимо убедиться в том, что регистр хранения передатчика свободен, то есть убедиться в том, что передача предыдущего симв...
6.5.3. Прием данных
6.5.3. Прием данныхАналогично передаче данных, перед вводом символа из порта приемника 3F8h необходимо убедиться в том, что бит 0 порта 3FDh установлен в 1. Это означает, что символ принят из лини...
6.5.4. Пример программы передачи данных
6.5.4. Пример программы передачи данных Приведем пример программы, использующей описанные выше функции для изменения скорости передачи данных и для проверки асинхронного адаптера. Для правильной р...
6.5.5. Использование прерываний
6.5.5. Использование прерыванийТак как процесс последовательной передачи данных протекает достаточно медленно, имеет смысл выполнять его в фоновом режиме, используя прерывания по окончанию передач...
7.ПРИНТЕР
7. ПРИНТЕР7.1. Подключение принтера к компьютеру7.2. Работа параллельного принтерного порта7.3. Средства BIOS для работы с принтером7.4. Средства MS-DOS для работы с принтером7.5.Установка пе...
7.1. Подключение принтера к компьютеру
Принтер подключается к компьютеру двумя способами: либо через асинхронный адаптер, рассмотренный ранее, либо через порт параллельной передачи данных. Возможно подключение к одному компьютеру сразу...
7.2. Работа параллельного принтерного порта
BIOS может работать с тремя параллельными принтерными портами. В процессе тестирования и инициализации системы BIOS находит работоспособные принтерные порты и записывает их базовые адреса в таблиц...
Порт 378h.
Порт 378h.Этот порт предназначен для записи выводимого на принтер байта данных. Возможно также чтение только что записанного байта....
Порт 37Ah.
Порт 37Ah.Порт управления принтером, доступен для чтения и записи: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+-+T+T+T+T+T+T- L=T=- ¦ ¦ ¦ ¦ L= строб данных, принимает значение 1 при ¦ ¦ ¦...
Порт 379h.
Порт 379h.Порт состояния принтера, доступен только для чтения: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+-+T- ¦ ¦ ¦ ¦ ¦ L===¦= установлены в 0; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======= сигнал...
7.3. Средства BIOS для работы с принтером
BIOS использует для работы с принтером функции 0, 1, 2 прерывания INT17h. Функция 00h предназначена для печати одного символа: На входе: AH = 00h; AL = ASCII-код символа для печати;...
7.4. Средства MS-DOS для работы с принтером
Для печати символа на стандартном печатающем устройстве LPT1 (он же PRN) вы можете использовать функцию 05h прерывания MS-DOS INT 21h: На входе: AH = 05h; DL = ASCII-код символа дл...
7.5.Установка переключателей конфигурации
Как правило, матричные принтеры позволяют устанавливать режим своей работы с помощью переключателей режима. Для доступа к этим переключателям вам не надо разбирать принтер или снимать крышку корпу...
7.6. Программирование режимов принтера
Для изменения режимов работы принтера и выполнения загрузки шрифтов используются специальные командные последовательности символов. Командные последовательности посылаются в принтер как обычные си...
ESC "@" Инициализация принтера
ESC "@" Инициализация принтераДля сброса принтера в исходное состояние программа должна послать на принтер два байта - байт ESC (1Bh) и байт, соответствующий ASCII-символу "@"...
07H Генерация звукового сигнала
07h Генерация звукового сигналаЕсли послать этот байт, принтер издаст звуковой сигнал. Сигнал удобно использовать для привлечения внимания оператора, например, когда кончилась бумага....
0Dh Возврат каретки
0Dh Возврат кареткиРаспечатываются все символы из буфера принтера, затем каретка (печатающая головка) возвращается к началу строки. В зависимости от переключателя конфигурации SW 2-4 может дополни...
0Ah Перевод строки
0Ah Перевод строкиКогда этот символ посылается на принтер, все символы, находящиеся во внутреннем буфере принтера, распечатываются, затем каретка возвращается к началу строки и происходит подача л...
0Ch Перевод страницы
0Ch Перевод страницыПринтер распечатывает все символы, находившиеся в буфере, затем выполняет прогон одного листа бумаги....
ESC "x" n Выбор качества печати:
ESC "x" n Выбор качества печати: 0 - низкое качество; 1 - качественный шрифт NLQ. Для задания типа шрифта надо вывести на принтер три байта: символ ESC (1Bh), символ "x&quo...
7.7. Печать русских букв
Если среди национальных наборов символов, имеющихся в постоянном запоминающем устройстве, имеются русские буквы, то вам достаточно правильно установить переключатели SW 1-6...1-8 и SW 1-...
7.8. Печать в графическом режиме
До сих пор мы использовали принтер только для печати символьной информации - буквы, цифры, символы псевдографики и т.д. Коды символов мы тем или иным способом выводили на принтер, принтер распечат...
8.КОНТРОЛЛЕР ПРЕРЫВАНИЙ
8. КОНТРОЛЛЕР ПРЕРЫВАНИЙ8.1. Механизм прерываний 8.2. Таблица векторов прерываний 8.3. Маскирование прерываний 8.4. Изменение таблицы векторов прерываний 8.5. Особенности обработки аппаратных...
8.1. Механизм прерываний.
Для обработки событий, происходящих асинхронно по отношению к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое особое событие в системе,...
8.2. Таблица векторов прерываний
Для того чтобы связать адрес обработчика прерывания с номером прерывания, используется таблица векторов прерываний, занимающая первый килобайт оперативной памяти - адреса от 0000:0000 до 0000:03FF...
8.3. Маскирование прерываний
Часто при выполнении критических участков программ для того, чтобы гарантировать выполнение определенной последовательности команд целиком приходится запрещать прерывания. Это можно сделать команд...
8.4. Изменение таблицы векторов прерываний
Вашей программе может потребоваться организовать обработку некоторых прерываний. Для этого программа должна переназначить вектор на свой обработчик. Это можно сделать, изменив содержимое соответст...
8.5. Особенности обработки аппаратных прерываний.
Аппаратные прерывания вырабатываются устройствами компьютера, когда возникает необходимость их обслуживания. Например, по прерыванию таймера соответствующий обработчик прерывания увеличивает содер...
8.6. Контроллер прерываний 8259
Программируемый контроллер прерываний 8259 (отечественный аналог - КР1810ВН59А) предназначен для обработки до восьми приоритетных уровней прерываний. Возможно каскадирование микросхем, при этом об...
9.КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ
9. КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ9.1. Контроллер прямого доступа для IBM PC/XT 9.2. Контроллер прямого доступа для IBM AT Прямой доступ к памяти (Direct Memory Access - DMA) используется...
9.1. Контроллер прямого доступа для IBMPC/XT
Контроллер прямого доступа для IBM PC/XT реализован на базе микросхемы Intel 8237A и содержит четыре канала. Эти каналы используются следующим образом:0обновление содержимого динамической пам...
1. Регистры каналов DMA
9.1.1. Регистры каналов DMAКаждый канал содержит 16-разрядные регистры: регистр текущего адреса CAR, содержит текущий адрес ячейки памяти при выполнении операции обмена данными с использованием DM...
Порты 00h - 07h
Порты 00h - 07hЭти регистры содержат базовые адреса и счетчики передаваемых данных каналов 0 - 3. Их назначение приводится в следующей таблице:00hЗапись:Базовый адрес канала 0 Чтение:Текущий адрес...
Порт 08h.
Порт 08h.Этот порт используется при записи в качестве управляющего регистра и при чтении как регистр состояния. Формат управляющего регистра: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T...
Порт 09h.
Порт 09h.Регистр запроса. Предназначен для организации программного (а не аппаратного) запроса на DMA. Для использования программного запроса канал должен быть запрограммирован в режиме блочной пе...
Порт 0Ah
Порт 0AhРегистр маски. Используется для маскирования запросов на прямой доступ для отдельных каналов: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ LT+-+-+-+T+T+T+T- L===T===- ¦ L=¦= номер канала:...
Порт 0Bh
Порт 0BhРегистр режима. Служит для определения режимов работы каналов контроллера DMA: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- L=¦ ¦ ¦ L=¦ L=¦= номер канала: ¦ ¦ ¦ ¦...
Порт 0Ch
Порт 0ChСброс триггера байтов. Для загрузки внутренних 16-разрядных регистров контроллера используется последовательный вывод младшего, затем старшего байтов слова. После сброса триггера байтов мо...


- Начало -