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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

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


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

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

Предыдущая страница Следующая страница
1 ... 47 48 49 50 51 52 53  54 55 56 57 58 59 60 ... 198
                 pop    dx
                 ret
         more_digit:
                 shl    ax,cl      ; открытие места для следующей цифры
                 jmp    nxt_digit  ; цикл для следующей цифры
         bad_digit:
                 @DisStr digit_error ; информирование об ошибке элемента
                 stc               ; ошибка - установка переноса
                 pop    cx
                 pop    dx
                 ret
         ; ожидался двухцифровой шестнадцатиричный номер
         digit_error db 'A two-digit hex number was expected',CR,LF,'$'
         get_hex ENDP
         ;
         ; ===== BIN2HEX отображает значение, содержащееся в AX как =====
         ; ===== шестнадцатиричный #. Регистры не портятся. CH содержит =
         ; ===== # цифры для отображения, выбираемой слева направо в AX.=
         ; ===== (AH отображается, если CH равен 2). ====================
         ;
         bin2hex PROC   NEAR

                                      - 3-72 -
                 push   ax         ; сохранение всех регистров
                 push   bx
                 push   cx
                 push   dx
                 mov    cl,4       ; установка счетчика чередования
                 mov    bx,ax      ; копирование AX для работы
         ; Начало цикла DIGIT (цифра) для обработки   цифр
         moredig:
                 rol    bx,cl      ; преобразование двоичн.-шестнадцат.
                 mov    al,bl
                 and    al,0Fh
                 add    al,90h
                 daa
                 adc    al,40h
                 daa
         ; Отображение цифры и проверка на последующие цифры - восста-
         ; новление, если нет
                 @DisChr al
                 dec    ch
                 jnz    moredig
                 pop    dx
                 pop    cx
                 pop    bx
                 pop    ax
                 ret
         bin2hex ENDP
         ;
         remove  ENDS
                 END    start
         ----------------------------------------------------------------


             Эта секция, отображающая содержимое адресуемого размещения с
         помощью вектора,  может быть выбрана и превращена  в  программу.
         Эта программа может быть использована для отображения содержимо-
         го любого вектора прерывания и его возможных подпрограмм  обслу-
         живания.
             Программа REMOVE служит примером для многих тем, обсужденных
         в этой главе, и помогает при демонстрации рекомендуемого инстру-
         ментария установки и удаления.

                                    Заключение

             Материал, представленный в этой главе,  касается многих  от-
         дельных тем.  Дополнительно к обещанному материалу по управлению
         программами и памятью в эту главу был также включен  материал по
         организации программ, а также по  структуре и содержимому  прог-
         рамм MS-DOS. Было дано множество примеров способов  функциониро-
         вания макроассемблера (MASM) MS-DOS.
             Несмотря на то, что показанный здесь материал, не всегда мо-
         жет оказаться для Вас полезным, мы надеемся, что Вы найдете при-
         ложение многому из того, что изложено в этой главе.  Для систем-
         ных и прикладных программистов особенно важным является материал
         по PSP и организации программ в памяти.

             Глава 4. ПРОГРАММЫ TSR (ЗАВЕРШИТЬ И ОСТАВИТЬ РЕЗИДЕНТНОЙ)

             Обзор
             Работа с аппаратурой PC
             Работа в среде DOS
             Загрузка и инициализация TSR
             Реактивация, архитектура DOS и сервис
             Фоновая обработка с использованием Int 28h
             Удаление из памяти программ TSR
             Заключение

              Создание и установка резидентных программ (TSR) является ши-
         роко  используемым  средством,  но  его функционирование остается
         скрытым от большинства пользователей.  Архитектура MS-DOS и аппа-
         ратные  средства PC налагают ограничения на возможности TSR и ус-
         ловия их осуществления. Некоторые из этих ограничений проявляются
         только тогда,  когда TSR выводятся на экран или запрашивают базо-
         вую систему ввода-вывода (BIOS) с прерыванием программ обслужива-
         ния; другие требуют внимания при установке TSR.
              Эта глава описывает работу TSR. Вы будете ознакомлены с  об-
         служиванием (документированным и нет),  которое обеспечивает DOS,
         и со взаимодействием TSR с DOS.  Вы будете  также  ознакомлены  с
         несколькими  техническими  решениями автора относительно TSR.  Но
         вначале несколько слов предупреждения.
              Многие материалы, использованные в этом описании не докумен-
         тированы,  а получены реассемблированием PC-DOS версии 3.10. Мно-
         гие обсуждаемые здесь программы не доступны в версиях PC-DOS ниже
         3.00, и нет гарантий, что они будут представлены в следующих вер-
         сиях DOS.  Многие особенности характерны для программного обеспе-
         чения PC-DOS 3.10, которое их использует, и не могут быть перене-
         сены в другие выпуски DOS,  но могут быть использованы в будущем.
              Это делает возможным конфликты между различными существующи-
         ми TSR (включая представленные здесь примеры). Степень этих конф-
         ликтов может находиться в диапазоне от досадных до катастрофичес-
         ких. Наиболее серьезные из них могут привести к потере данных или
         порче диска.
              Дополнительно в   этой  главе  описывается  программирование
         контроллера CRT 6845,  который поддеpживает монохромный и цветной
         дисплейные  адаптеры (MDA и CGA). Ошибки в программировании этого
         устройства могут привести к серьезному повреждению Вашей системы.

                                       Обзор

              Резидентные программы становятся повсеместными. Они доступны
         как коммерческие программы, совместно используемые средства и да-
         же как часть MS-DOS.  Sidekick (боковой удар) Борланда  является,
         вероятно,  наиболее известным коммерческим предложением.  Команды
         PRINT и ASSIGN и несколько других утилит DOS также являются рези-
         дентными.
              Все резидентные программы начинают жизнь,  как обычные прог-
         раммы.  После выполнения такой программы часть ее кода остается в
         памяти. Код, который выполняется при первом обращении, называется
         кодом инициализации,  а тот, который остается после, известен как
         резидентный код.  Основной задачей  кода  инициализации  является
         подготовка резидентного кода для дальнейшего использования.  Воз-
         можности кода инициализации не  ограничены,  но  программирование

                                      - 4-2 -
         резидентного кода может быть сложным.
              Резидентные программы могут быть сгруппированы в три катего-
         рии на основе того,  что их резидентный код делает.  Члены первой
         группы не обеспечивают взаимодействия пользователя с их резидент-
         ной частью.  Однажды загруженные, они остаются фоновыми, выполняя
         свои  задачи  без  обращения  к  базовой   системе   ввода-вывода
         (BIOS).Команда  DOS ASSIGN является одним из таких резидентов; ее
         резидентная часть обеспечивает доступ и переназначает запрошенный
         диск  с  одного драйвера на другой.  Подробное документирование и
         многочисленные примеры делают написание  этого  типа  резидентных
         программ несложной задачей.
              Члены второй группы резидентных программ  остаются  приоста-
         новленными  до  выдачи специального запроса пользователя.  Обычно
         этот запрос производиться  нажатием  функциональной  клавиши  или
         комбинацией   функциональной   клавиши   с   другими   (например,
         Alt-Shift), причем функциональная клавиша нажимается последней. С
         другой  стороны,  их резидентный код не делает запросов к базовой
         системе ввода-вывода; они должны обслуживаться командами DOS, та-
         кими, как чтение и запись, только во время инициализации.
              Небольшая резидентная телефонная база данных попадает  в эту
         группу.  Код  инициализации  считывает полное ее оглавление в па-
         мять.  В ответ на нажатие функциональной клавиши резидентный  код
         должен  сохранить  текущий экран,  получить одно или больше имен,
         найти ассоциированные с ними номера телефонов  и  отобразить  ре-
         зультаты поиска. Когда имен больше нет, резидент должен восстано-
         вить начальный экран и выключиться.
              Обслуживание, необходимое  для таких TSR,  достаточно хорошо
         документировано,  но есть несколько технических  решений  относи-
         тельно  распределения  используемых  клавиш и связи с аппаратными
         средствами отображения.
              Последняя группа резидентных программ осуществляет асинхрон-
         ные запросы к базовой системе ввода-вывода.  Эти программы запус-
         каются  нажатием  функциональной  клавиши  или  каким-либо другим
         программным прерыванием от аппаратных средств, (например,  тайме-
         ром). Этот резидентный код не обязательно имеет связь с пользова-
         телем.  К этой категории относится  утилита DOS PRINT.  Эти рези-
         дентные программы трудны для написания, потому что DOS в основном
         является однопользовательской/однопрограммной  системой.  Майкро-
         софт  имеет средство отладки для таких программ,  но оно не доку-
         ментировано и для правильного использования требует нестандартных
         соглашений DOS .
              Перед тем,  как начать писать резидентную программу, Вам бу-
         дет нужна некоторая дополнительная информация. Например, для под-
         держки "горячих" функциональных клавиш, Вы должны знать,как рабо-
         тает клавиатура и дисплей. Или,например, архитектура программного
         обеспечения DOS налагает некоторые реальные  ограничения  на  то,
         что могут делать резидентные программы; Вы должны знать о работа-
         ющих в версии DOS модулях,  которые воздействуют на TSR.  Раз  Вы
         понимаете  работу аппаратуры и механизм операционной системы,  Вы
         должны быть готовы изучить, что TSR требует при своей инициализа-
         ции и реактивации. И, наконец, Вы узнаете,как писать TSR, которая
         выполняется в фоновом разделе.

                              Работа с аппаратурой PC

              Клавиатура, таймер и некоторые другие устройства при обраще-
         нии к процессору генерируют прерывания. Системы PC/XT поддержива-

                                      - 4-3 -
         ют восемь различных программных прерываний,а системы AT - больше.
         Многие из этих прерываний относятся к драйверам устройств, и TSR
         не должны взаимодействовать с ними.Из всех программных прерываний
         TSR  взаимодействует только с прерываниями от таймера и клавиату-
         ры.
              Часть обращений   к  резидентным  программам  осуществляется
         пользователем при работе с  "горячими"  ключами.  Одним  нажатием
         клавиши  можно  вызвать  TSR и запросить выполнение какой-либо ее
         функции.  Если программа написана грамотно, она сразу включается,
         выполняет  свою  работу и уходит в фоновый раздел без повреждения
         или разрушения других программ.  Осуществление запросов через го-
         рячие  ключи  требует небольшой работы и хорошего понимания,  как
         функционируют дисплей и клавиатура.
              Некоторые резидентные программы должны выполнять свои задачи
         через точно заданные периоды. Каждый персональный компьютер имеет
Предыдущая страница Следующая страница
1 ... 47 48 49 50 51 52 53  54 55 56 57 58 59 60 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама