Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 64 65 66 67 68 69 70  71 72 73 74 75 76 77 ... 198
         говорящего устройства.  Если этот бит установлен в значение  "1",
         говорящее устройство включено.  В противном случае оно выключено.
         Другие биты этого порта управляют другими функциями. Ниже листинг
         5-1 содержит программу,  использующую  порт говорящего устройства
         для генерации звуковых сигналов:

             Листинг 5-1. Генерация звуковых сигналов при помощи порта
                               говорящего устройства
         ----------------------------------------------------------------

                      in     al,61h    ; 61h - это адрес порта говоря-
                                       ;       щего устройства
                      mov    bl,Ofch   ; маска для сброса битов О и 1
                      and    al,bl     ; маскировка al
            noise_on:
                      or     al,2      ; бит 1 в al установлен в зна-
                                       ; чении "1"
                      out    61h,al    ; включение говорящего уст-
                                       ; ройства
                      mov    cx,Offh   ; время включения
            time_1:
                      loop   time_1
            noise_off:
                      and    al,bl     ; сброс битов 0 и 1
                      out    61h,al    ; выключение говорящего уст-
                                       ; ройства
                      mov    cx,Offh   ; меньшее значение в cx озна-
                                       ; чает повышенную частоту
                                       ; звука

                                      - 5-10 -
            time_2:
                     loop    time_2
                     push    ax        ; сохранение ax
                     mov     ah,1      ; считать значение состояния
                                       ; клавиатуры
                     int     16h       ; вызов средств клавиатуры
                                       ; BIOS
                     pop     ax        ; сохранить ax до выполнения
                                       ; перехода

                     jnz     exit      ; символ был набран
                     jmp     noise_on  ; символ не был набран
            exit:
                     ret
         ----------------------------------------------------------------

            В представленной выше программе говорящее  устройство повторно
         включается  и  выключается  путем записи байта в порт 61h.  После
         включения говорящего устройства команда LOOP выполняется  с целью
         предоставления  этому  устройству некоторого времени  для  работы
         прежде чем оно будет отключено.  Звук продолжает поступать до тех
         пор, пока с клавиатуры не будет введен какой-нибудь символ. Функ-
         ция прерывания "int 16h"  используется  для  считывания  значения
         состояния клавиатуры.
            В таблице 5-3 представлены номера портов центрального  процес-
         сора CPU, используемые в операционной системе MS-DOS для каких-то
         конкретных целей.

                                                         Таблица 5-3
                Порты центрального процессора CPU, используемые для
                                определенных целей
         ДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДД
            Порт центрального   ¦ Адрес ввода/вывода ¦Вектор прерыва-
            процессора CPU      ¦                    ¦      ния
         ДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДД
            Таймер              ¦ 040=043            ¦     8
            Вторичный RS-232    ¦ 2F8=2FF            ¦    11
            Клавиатура          ¦ 060=063            ¦     9
            Жесткий диск        ¦ 320=32F            ¦    13
            Печатающее уст-     ¦ 378=37F            ¦    15
            ройство(принтер)    ¦                    ¦
            Монохромный дисп-   ¦ 380=3BF            ¦     -
            лей                 ¦                    ¦
            Цветной дисплей     ¦ 3D0=3DF            ¦     -
            Гибкий диск         ¦ 3F0=3F7            ¦    14
            Первичный RS-232    ¦ 3F8=3FF            ¦    12
         ДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДД

              Порты операционной системы MS-DOS предназначены для передачи
         данных  высокого уровня.  Это значит,  что процессор не управляет
         непосредственно этими данными, а доступ к ним осуществляется пос-
         редством  обращения к функциям операционной системы MS-DOS и сис-
         темы  ПЗУ-BIOS.  Существует  два типа портов операционной системы
         MS-DOS, известные  под названием "последовательных портов" и "па-
         раллельных портов".
              Параллельные порты  в основном разрабатываются для подключе-

                                      - 5-11 -
         ния к ним печатающих устройств (принтеров). Данные через эти пор-
         ты проходят параллельно,  то есть, все восемь битов, составляющие
         байт,  передаются на принтер одновременно.  Операционная  система
         DOS  поддерживает  передачу потока данных через параллельный порт
         только в одном направлении (то есть от  компьютера  к  принтеру),
         хотя  сами по себе аппаратные средства могут осуществлять функции
         и ввода и вывода. Ниже предложена часть программы, в которой про-
         исходит вывод строки,  заданной при помощи DS:DX,  в параллельный
         порт.  Функция прерывания операционной системы MS-DOS "int 21h" с
         параметром  AH=40H  (записать  файл)  используется для выполнения
         этого условия.  Регистр BX содержит описатель файла для стандарт-
         ного  устройства  печати (4).  После обработки запроса регистр ax
         будет содержать количество символов,  действительно помещенных  в
         параллельный порт.

                        mov    ah,40h            ; функция = запись
                                                 ;            файла
                        mov    bx,4              ; описано для стан-
                                                 ; дартного принтера

                        mov    cx,20             ; подсчет числа сим-
                                                 ; волов

                        mov    dx,seg OUTSTR     ;
                        mov    ds,dx             ;
                        mov    dx,offset OUTSTR  ;  ds:dx указывает на
                                                 ;  OUTSTR
                        int    21h               ;  обращение к опера-
                                                 ;  ционной системе
                                                 ;  MS-DOS
                        jc     failed            ;  установленное в
                                                 ;  единицу  значение
                                                 ;  переноса означает
                                                 ;  сбой принтера

              Последовательные порты  обычно  используются для подключения
         модемов,  а также для подключения устройства "мышь". Данные через
         последовательные порты передаются по одному биту по одному и тому
         же проводнику.  Операционная система  DOS  поддерживает  передачу
         данных в двух направлениях, то есть, в компьютер и от компьютера.
              Передача данных через последовательные порты ведется  асинх-
         ронно.  Поэтому  на обоих концах линии передачи должен быть уста-
         новлен ряд согласующих параметров.   Скорость передачи  данных  в
         бодах "последовательного порта" равна числу битов, передаваемых в
         секунду.  Скорость передачи данных в бодах, поддерживаемая опера-
         ционной  системой MS-DOS версии 3.3,  лежит в диапазоне от 110 до
         19200 битов в секунду. "Длина слова" представляется числом битов,
         составляющих символ.  Это значение может равняться 7 или 8. "Чет-
         ность" - это простой механизм обнаружения ошибок в линии  переда-
         чи. Согласно стандартам, принятым в интерфейсах RS-232 для после-
         довательной передачи данных, значением параметра  четности  может
         быть "четно" или " нечетно" (два способа проверки ошибок) или мо-
         жет не существовать проверки на четность. Каждый символ отделяет-
         ся от других битами,  называемыми "битами останова".  Можно зада-
         вать один или  два  бита  останова.  Эти  параметры  должны  быть
         проинициализированы до начала процесса передачи данных.
              Функция прерывания "int 14h" системы BIOS  используется  для

                                     - 5-12 -
         передачи данных через последовательный порт. Инициализация после-
         довательного порта выполняется  установкой  в  регистре  AH  кода
         функции 0. Параметры передачи задаются в регистре AL, как это по-
         казано в таблице 5-4.  "Номер порта" указывается в DX. Существует
         четыре  последовательных портов в операционной системе MS-DOS. Их
         именами являются значения от COM1 до COM4.  В представленной ниже
         программе  последовательный порт инициализируется исходно для пе-
         редачи данных со скоростью 9600 бод,  слов  длиной в 8  битов,  с
         одним битом  останова при отсутствии проверки на четность.  После
         выполнения запроса к функции регистр AH содержит значение состоя-
         ние порта.

                   mov     ah,0      ; инициализировать последователь-
                                     ; ный порт
                   mov     al,0e3h   ; 9600 бод, 8-битовое слово, от-
                                     ; сутствие проверки на четность,
                                     ; 1 бит останова
                   mov     dx,0      ; порт COM1 инициализируется
                   int     14h       ; вызов системы ПЗУ-BIOS


                                                         Таблица 5-4
                     Параметры связи, задаваемые в регистре AL
         ДДДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДД
          Скорость    ¦   Четность   ¦ Биты останова  ¦ Длина слова
          в бодах     ¦              ¦                ¦
         ДДДДДДДДДДДДД¦ДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДД
         Биты   Ско-  ¦ Биты Чет-    ¦        Биты    ¦ Биты  Длина
         7,6,5  рость ¦ 4,3  ность   ¦ Бит 2  останова¦  1,0
         ДДДДДДДДДДДДД†ДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДД
         000    110   ¦x0  Отсутствует  0     1 бит   ¦  10   7 битов
         001    150   ¦01  Нечетная  ¦  1     2 бита  ¦  11   8 битов
         010    300   ¦11  Четная    ¦                ¦
         011    600   ¦              ¦                ¦
         100   1200   ¦              ¦                ¦
         101   2400   ¦              ¦                ¦
         110   4800   ¦              ¦                ¦
         111   9600   ¦              ¦                ¦
         ДДДДДДДДДДДДДБДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДД

              В предлагаемом  ниже куске программы символ 'x' записывается
         в последовательный порт. При возврате, если бит 7 регистра AH ус-
         тановлен в значение "0",  обращение к функции было успешным. Зна-
         чение "0" *, в бите 7 регистра AH указывает на сбой.
         --------------------------
             * Возможно,  в оригинал текста вкралась опечатка:  или  здесь
               или  в предыдущем предложении должно стоять значение "1"...
               (Примеч. переводчика.)

                   mov     ah,1      ; функция 1= запись символа
                   mov     al,'x'    ; регистр AL содержит символ
                   mov     dx,0      ; запись в порт COM1
                   int     14h       ; обращение к системе ПЗУ-BIOS
Предыдущая страница Следующая страница
1 ... 64 65 66 67 68 69 70  71 72 73 74 75 76 77 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама