| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
sub si,Count
cmp si,offset Source
jae loc_1730
add si,Buf_Size
loc_1730:
mov al,[si] ; выберем символ
dec Count ; и уменьшим счечик
sti ; разрешение прерываний
pop si
clc ; и нормальный возврат
ret
Get_Chr endp
_TEXT ends
end
- 121 -
E12. Игровой адаптерF
Игровой адаптер - это аналого-цифровой преобразователь,
который может использоваться для подключения к ПЭВМ аналоговых
устройств (например, джойстика или измерительных приборов). Он
принимает до четырех цифровых входов типа "включено/выключено"
(например, для нажатия кнопок) и до четырех аналоговых входов
(таких, как координаты джойстика или показания электронного
термометра). Игровой адаптер подключен в IBM PC к порту ввода
201h. Байт, введенный из этого порта, имеет следующий формат:
7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іB2 B1 A2 A1іBy Bx Ay Axі Биты:
АДДБДДЕДДБДДБДДБДДЕДДБДДЩ ДДДДД
і АДДДДДД> 0-3: координаты (аналоговые входы)
АДДДДДДДДДДДДДДДДДД> 4-7: триггеры (цифровые входы)
Для чтения триггеров используются команды:
mov dx,201h
out dx,al ;инициировать обмен, AL -любой байт
in al,dx ;читать порт, биты 4-7 - 0=кнопка нажата
; 1=отпущена
Аналоговые входы считываются путем отслеживания времени,в
течениe которого соответствующий бит установлен в единицу, после
команды OUT 201h,XXX. Пример чтения координаты X устройства А:
mov dx,201h
out dx,al ;инициировать обмен, AL-любой байт
mov cx,-1 ;счетчик для цикла
Again:
in al,dx
inc cx ;увеличить счетчик
test al,1 ;бит AX сброшен?
jne Again ;нет, ждем
Результат в СX указывает координаты Х. Этот способ зависит
от тактовой частоты ЦП, поэтому аккуратней было бы использовать
не счетчик цикла, а системный таймер.
- 122 -
E13. CMOSF
E13.1. Доступ к CMOSF
В состав IBM PC AT входят часы реального времени (RTC) и 64
байта неразрушающейся оперативной памяти (CMOS), питающиеся от
автономного источника питания. При включении ПЭВМ содержимое
CMOS анализируется BIOS, который извлекает из нее конфигурацию
системы и текущие дату и время.
Для доступа к данным CMOS используются порты 70h и 71h.
Чтение байта CMOS производится следующим образом:
mov al,XXh
out 70h,al ;выбрать адрес CMOS XX
jmp $+2 ;небольшая задержка
in al,71h ;ввод байта из CMOS
Запись байта в CMOS производится аналогино:
mov al,XXh
out 70h,al
jmp $+2
in al,71h
Адреса CMOS с 10h по 20h защищены контрольной суммой,
хранящейся по адресу 2Eh. Поэтому изменения содержимого этих
адресов необходимо сопровождать пересчетом и изменением
контрольной суммы.
Порт 70h применяется не только для задания адреса CMOS, но
и для разрешения или запрещения NMI (немаскируемого прерывания).
Если бит 7 равен 0, то NMI разрешается, если 1 - запрещается,
например:
mov al,2Dh ;2Dh -резервный адрес CMOS
out 70h,al ;разрешить NMI
mov al,0ADh
out 70h,al ;запретить NMI
- 123 -
E13.2. Содержимое CMOSF
Краткая схема содержимого CMOS такова:
Адрес Содержимое
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
00h-0Dh Данные часов реального времени (RTC)
0Eh Байт результатов начального тестирования
0Fh Состояние перезагрузки
10h Тип НГМД
11h Резерв
12h Тип жесткого диска
13h Резерв
14h Байт оборудования
15h-16h Размер базовой памяти
17h-18h Размер дополнительной памяти
19h-1Ah Типы жестких дисков
1Bh-2Dh Резерв
2Eh-2Fh Контрольная сумма CMOS
30h-31h Размер дополнительной памяти
32h Текущее столетие
33h Разная информация
34h-3Fh Резерв
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Приведем полное описание всех полей CMOS.
Адрес Описание Примечание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0 Текущее время RTC, секунды Все данные RTC
1 Время побудки, секунды хранятся в двоично-
2 Текущее время, минуты десятичном формате
3 Время побудки, минуты (BCD)
4 Текущее время, часы
5 Время побудки, часы
6 Текущий день недели
7 Текущий день месяца
8 Текущий месяц
9 Текущий год
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0Ah Регистр A состояния RTC:
7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і Биты:
АВДБДДБДВБДДБДДБДДЕДДБДДЩ ДДДДД
і і АДДДДДДД> 0-3:скорость отсчета (равна 0110)
і АДДДДДДДДДДДДДДДДД> 4-6: делитель (равен 010)
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: флаг обновления (0=можно читать)
- 124 -
0Bh Регистр B состояния RTC:
7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і і Биты:
АВДБВДБВДБВДБВДБВДБВДБВДЩ ДДДДД
і і і і і і і АДДД> 0: тип времени (равен 0)
і і і і і і АДДДДДД> 1: 12- или 24-часовое время
і і і і і і (равен 1=24 часа)
і і і і і АДДДДДДДДД> 2: формат данных: 0=BCD,
і і і і і 1=двоичный (равен 0)
і і і і АДДДДДДДДДДДД> 3: 1=разрешить прямоугольный
і і і і импульс (равен 0)
і і і АДДДДДДДДДДДДДДД> 4: 1=разрешить прерывание по
і і і концу обновления (равен 0)
і і АДДДДДДДДДДДДДДДДДД> 5: 1=разрешить прерывание
і і побудки (равен 0)
і АДДДДДДДДДДДДДДДДДДДДД> 6: 1=разрешить периодические
і прерывания (равен 0)
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: флаг обновления (0=можно читать)
0Ch Регистр С состояния RTC: биты состояния прерываний,
только для чтения.
0Dh Регистр D состояния RTC. Бит 7=1, если CMOS получает
питание; 0=нет питания от автономного источника.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0Eh Байт результатов начального тестирования:
7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і0 і0 і Биты:
АВДБВДБВДБВДБВДБВДБДДБДДЩ ДДДДД
і і і і і АДДДДДДДДД> 2: 1=формат текущего времени
|
adfun.ru
|
|
|
|