Главная · Поиск книг · Поступления книг · 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 ... 167 168 169 170 171 172 173  174 175 176 177 178 179 180 ... 198
         рационной системы MS-DOS  следует  избегать  использования  любых
         прерываний,  не  являющихся  истинными  прерываниями операционной
         системы MS-DOS . Информация о недокументированных прерываниях при-
         ведена в приложении Б.

                                   Вызов функций

              Использование вызовов функций,  вероятно,  является наиболее
         важным фактором совместимости при программировании на  языке  Ас-
         семблер.  Поскольку почти все операции, обычно выполняемые опера-
         ционной системой MS-DOS, могут инициироваться обращениями к функ-
         циям, вы можете избежать использования прерываний в системе BIOS.
         Используя вызов функций операционной системы MS-DOS,  можно также
         устранить  необходимость  включения в ваши программы определенных
         типов стандартных программ, таких, как программ управления файла-
         ми. Если сверхбыстрое выполнение Ваших программ не является реша-
         ющим требованием, лучше позволить операционной системе MS-DOS вы-
         полнять  все  стандартные  операции  путем  обычного  обращения к

                                      - 13-9 -
         функциям.  Операционная система MS-DOS  выполняет  вызов  функций
         достаточно быстро для большинства возможных ситуаций.

                   Выполнение вызова функций стандартным образом
              Когда на свете появилась первая версия  операционной системы
         MS-DOS,  в  ней  существовало  два способа выполнения обращений к
         функциям.  Первый рекомендованный для использования со всеми вер-
         сиями  операционной системы MS-DOS способ представлен ниже в виде
         семи последовательных действий:
              1. Сохранение  содержимого регистров AX,  BX,  CX и DХ путем
                 выталкивания их значений в стек.
              2. Помещение номера функции в регистр AH.
              3. Помещение других данных в регистры,  указанные для выпол-
                 нения заданной функции, если это нужно.
              4. Выполнение команды прерывания "int 21h".
              5. В  зависимости от выполняемой функции,  переменные данные
                 возвращаются в указанных  регистрах  для  возможности  их
                 дальнейшего считывания и использования в вашей программе.
                 Некоторые функции ничего не возвращают.
              6. Выполнение требуемой операции с использованием возвращен-
                 ных данных от только что выполненной  функции,  если  это
                 нужно.
              7. Восстановление исходного содержания регистров.

              Приведенная выше процедура рекомендуется  для  использования
         во всех версиях операционной системы MS-DOS. Второй способ работы
         с функциями описывается ниже.

                 Выполнение вызова функций в режиме совместимости

              Второй способ выполнения обращения к функциям, предоставляе-
         мый операционной  системой MS-DOS для обеспечения совместимости с
         другими операционными системами,  конкретно предназначен для опе-
         рационных систем CP/M-80 и CP/M-86. Этот способ в действительнос-
         ти не обеспечивает возможность запуска программ операционной сис-
         темы CP/M под управлением операционной системы MS-DOS.  Он только
         упрощает и облегчает преобразование программ операционной системы
         CP/M в программы операционной системы MS-DOS тем, что при этом не
         всегда требуется переопределение процедуры обращения  к функциям.
         Но, однако, Вам, вероятно, придется менять многие номера функций.
         Данный  способ пригоден только для функций с номерами от 0 до 24h
         операционной системы MS-DOS.  Возможно, Вы встретитесь с труднос-
         тями при использовании регистров в некоторых обращениях к функци-
         ям,  поэтому следует избегать использования  этого  метода,  если
         только вы не собираетесь тестировать вашу программу до ее полного
         преобразования.  Операционная система MS-DOS требует, чтобы обра-
         щение  к функциям с использованием этого второго способа выполня-
         лось следующим образом:
              1. Сохранение содержимого регистров AX,  BX,  CX и DХ  путем
                 выталкивания их значений в стек.
              2. Помещение номера функции в регистр CL.  (Могут  использо-
                 ваться только номера функций, начиная с 0 и до 24h).
              3. Помещение других данных в регистры,  указанные для выпол-
                 нения заданной функции, если это нужно.
              4. Произвести внутрисегментное обращение к адресу  5  внутри
                 текущего сегмента программы.  Этот адрес содержит длинное
                 обращение  к  диспетчеру  функций  операционной   системы

                                      - 13-10 -
                 MS-DOS.
              5. В зависимости от выполняемой функции,  переменные  данные
                 возвращаются  в  указанных  регистрах  для возможности их
                 дальнейшего считывания и использования в вашей программе.
                 Некоторые функции ничего не возвращают.  Примечание:  Эта
                 процедура всегда стирает содержимое регистра AX.  Все ос-
                 тальные регистры ведут себя так же, как и при использова-
                 нии стандартной процедуры обращения к функциям.
              6. Восстановление исходного содержания регистров.

             Еще один способ (только для версий операционной  системы
                          MS-DOS, начиная с 2.00 и выше)

              В версии  2.00  операционной  системы MS-DOS был представлен
         третий способ обращения к функциям.  Этот метод также  может  ис-
         пользоваться  с более старшими версиями,  но он будет неправильно
         работать со всеми более ранними версиями. Третий способ обращения
         к функциям выполняется следующим образом:
              1. Сохранение содержимого регистров AX,  BX,  CX и DХ  путем
                 выталкивания их значений в стек.
              2. Помещение номера функции в регистр AH.
              3. Помещение других данных в регистры,  указанные для выпол-
                 нения заданной функции.
              4. Произвести  длинное  обращение  к  адресу  со  смещением
                  "шестнадцатиричное 50" в префиксе программного сегмента.
              5. В  зависимости от выполняемой функции,  переменные данные
                 возвращаются в указанных  регистрах  для  возможности  их
                 дальнейшего считывания и использования в вашей программе.
                 Некоторые функции ничего не возвращают.
              6. Восстановление исходного содержания регистров путем обра-
                 ботки выборки из стека.

              С появлением операционной системы  MS-DOS  версии  3.10  обе
         фирмы - и "Майкрософт"  и  "ИБМ" рекомендуют не пользоваться этим
         способом.  Зачем же он тогда был введен?  Одно из  возможных  его
         применений  может объяснить это (по адресу шестнадцатиричное сме-
         щение 50) в PSP (в префиксе программного сегмента) обычно  содер-
         жится  команда прерывания "int 21h".  Используя метод,  описанный
         выше, программист направлял все обращения к функциям операционной
         системы MS-DOS (исключая другие прерывания) только через один ад-
         рес.  Изменив команду,  находящуюся по адресу  "шестнадцатиричное
         смещение  50",  вы  можете перенаправить все обращения к функциям
         операционной системы MS-DOS.  Является ли в настоящее время  этот
         способ обращения к функциям уже оставленной попыткой фирмы "Майк-
         рософт" реализовать мультизадачный режим?  Точный ответ  на  этот
         вопрос знает только сама фирма "Майкрософт".


                Функции, выполняемые в разных версиях операционной
                                  системы MS-DOS

              В таблице  13-2  приведен полный список функций операционной
         системы MS-DOS,  поддерживаемый версиями с 1.0 до 3.1 . В таблице
         также указаны функции, являющиеся новыми для некоторых версий.


                                      - 13-11 -
                                                         Таблица 13-2
                        Функции операционной системы MS-DOS
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     ¦    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДД†ДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер ¦           ¦   ¦    ¦    ¦    ¦    ¦    ¦    ¦    ¦
         преры-¦ Описание  ¦1.0¦ 1.1¦ 2.0¦ 2.1¦ 3.0¦ 3.1¦ 3.2¦ 3.3¦ 4.0
         вания ¦           ¦   ¦    ¦    ¦    ¦    ¦    ¦    ¦    ¦
         ДДДДДД†ДДДДДДДДДДД†ДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
          0    ¦Завершение ¦
               ¦программы  ¦
         ДДДДДД†ДДДДДДДДДДДґ
          1    ¦Ввод  с    ¦
               ¦клавиатуры ¦
         ДДДДДД†ДДДДДДДДДДДґ
          2    ¦Вывод на эк¦
               ¦ран дисплея¦
         ДДДДДД†ДДДДДДДДДДДґ
          3    ¦AUX-ввод   ¦                        Да
         ДДДДДД†ДДДДДДДДДДДґ
          4    ¦AUX вывод  ¦
         ДДДДДД†ДДДДДДДДДДДґ
          5    ¦Вывод  на  ¦
               ¦печатающее ¦
               ¦устройство ¦
               ¦(принтер)  ¦
         ДДДДДД†ДДДДДДДДДДДґ
          6    ¦Непосред-  ¦
               ¦ственный   ¦
               ¦ввод-вывод ¦
               ¦на консоль ¦
         ДДДДДД†ДДДДДДДДДДДґ
          7    ¦Нефильтрую-¦
               ¦щий ввод с ¦
               ¦консоли без¦
               ¦эха        ¦
         ДДДДДД†ДДДДДДДДДДДґ
          8    ¦ Ввод с    ¦
               ¦ консоли   ¦
               ¦ без эха   ¦
         ДДДДДД†ДДДДДДДДДДДґ
          9    ¦ Печать    ¦
               ¦ строки    ¦                   Да
         ДДДДДД†ДДДДДДДДДДДґ
               ¦Буферизован¦
          A    ¦ный ввод  с¦
               ¦клавиатур  ¦
         ДДДДДД†ДДДДДДДДДДДґ
               ¦Проверка   ¦
          B    ¦стандартно-¦
               ¦го состоя- ¦
               ¦ния ввода  ¦
         ДДДДДД†ДДДДДДДДДДДґ
               ¦Очистить бу¦
          C    ¦фер клавиа-¦
               ¦туры и     ¦
               ¦ждать ввода¦
               ¦с клавиа-  ¦
               ¦туры       ¦

                                      - 13-12 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     ¦    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДД†ДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер ¦           ¦   ¦    ¦    ¦    ¦    ¦    ¦    ¦    ¦
         преры-¦ Описание  ¦1.0¦ 1.1¦ 2.0¦ 2.1¦ 3.0¦ 3.1¦ 3.2¦ 3.3¦ 4.0
         вания ¦           ¦   ¦    ¦    ¦    ¦    ¦    ¦    ¦    ¦
         ДДДДДД†ДДДДДДДДДДД†ДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
               ¦Сброс      ¦
          D    ¦диска      ¦
         ДДДДДД†ДДДДДДДДДДДґ
               ¦Выбор      ¦
          E    ¦диска      ¦
         ДДДДДД†ДДДДДДДДДДДґ
               ¦Открыть    ¦
          F    ¦файл       ¦
         ДДДДДД†ДДДДДДДДДДДґ
         10    ¦Закрыть    ¦
               ¦файл       ¦
         ДДДДДД†ДДДДДДДДДДДґ
         11    ¦Поиск      ¦
               ¦первого    ¦                        Да
               ¦элемента   ¦
               ¦каталога   ¦
         ДДДДДД†ДДДДДДДДДДДґ
         12    ¦Поиск сле- ¦
               ¦дующего    ¦
               ¦элемента   ¦
               ¦каталога   ¦
         ДДДДДД†ДДДДДДДДДДДґ
         13    ¦Удалить    ¦
               ¦файл       ¦
         ДДДДДД†ДДДДДДДДДДДґ
         14    ¦Последова- ¦
               ¦тельное    ¦
               ¦считывание ¦
         ДДДДДД†ДДДДДДДДДДДґ
         15    ¦Последова- ¦
Предыдущая страница Следующая страница
1 ... 167 168 169 170 171 172 173  174 175 176 177 178 179 180 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама