Содержание
- 2. Следует учесть, что единственным механизмом обращения к функциям операционной системы является инициация программного прерывания.
- 3. ПРЕРЫВАНИЕ - ЭТО ОСОБОЕ СОСТОЯНИЕ ВЫЧИСЛИТЕЛЬНОГО ПРОЦЕССА. В момент прерывания нарушается нормальный порядок выполнения команд программы,
- 4. Прерывания MS-DOS. Всего в MS DOS имеется около 40 программных прерываний. каждое из которых может активизировать
- 5. Модуль Dos Модуль Dos содержит ряд подпрограмм для работы с файлами и доступа к средствам операционной
- 6. Процедуры и функции модуля Dos. Модуль DOS Функции управления операционной средой. Процедуры управления процессами. Процедуры обслуживания
- 7. Функции управления операционной средой. Программа, написанная на языке Турбо Паскаль 7.0, имеет возможность получать от MS-DOS
- 8. В Турбо Паскале имеется три функции для работы с переменными окружения: FUNCTION EnvCount : INTEGER; FUNCTION
- 9. Функции управления операционной средой. Функция EnvCount не имеет параметров и возвращает общее число переменных окружения. Функция
- 10. Пример. {Использование функций EnvCount и EnvStr} USES Dos; VAR I: INTEGER; BEGIN FOR I := 1
- 11. Функции управления операционной средой. Функция GetEnv позволяет по имени переменной окружения получить ее значение. при вызове
- 12. Процедуры управления процессами. Используя специальные средства языка Турбо Паскаль, можно организовать вызов из программы любой другой
- 13. Директива {$M 16384,0,655360} устанавливается для программ по умолчанию. Здесь максимальный размер кучи равен всей доступной памяти.
- 14. Процедуры управления процессами. Вызов программы-потомка производится с помощью процедуры: Exec(Path,CmdLine : STRING); Path — это полный
- 15. Для того чтобы определить, как прошел вызов, используется системная переменная DosError. Сразу после вызова процедуры Exec
- 16. Процедуры управления процессами. Значения переменной DosError соответствуют кодам, вырабатываемым операционной системой, и могут быть следующими :
- 17. Перед вызовом программы-потомка нужно восстановить исходные адреса обработчиков прерываний. А после завершения работы вызываемой программы установить
- 18. Процедуры управления процессами. Cпецифические особенности исполнения Турбо-Паскалевых программ требуют изменения стандартных значений некоторых векторов прерываний. К
- 19. Непосредственно перед запуском внешней программы и сразу после возврата из нее рекомендуется вызвать библиотечную процедуру не
- 20. Пример использования процедур Exec и SwapVectors . {Использование процедур Exec и SwapVectors} {$М 1024,0,0} {освобождение памяти
- 21. Процедуры управления процессами. Функция DosExitCode : WORD; Эта функция возвращает значение типа WORD, в младшем байте
- 22. Процедуры управления процессами. В заключение рассмотрим еще один весьма полезный пример. Программа воспринимает с клавиатуры любую
- 23. Обратите внимание: для указания файла СОММАND.СОМ и пути к нему используется обращение к библиотечной функции GetEnv,
- 24. Процедуры обслуживания прерываний. Несмотря на то, что Турбо Паскаль имеет большой набор инструментальных средств для использования
- 25. Для более полного использования возможностей MS-DOS в модуле Dos имеются две процедуры: Intr и MsDos.
- 26. Процедуры обслуживания прерываний. Процедура Intr(IntNo :BYTE; VAR Regs :REGISTERS) выполняет заданное программное прерывание. IntNo — номер
- 27. Процесс выполнения процедуры Intr. Таким образом, можно получить доступ к результатам работы процедуры прерывания
- 28. Процедуры обслуживания прерываний. Для доступа к отдельным битам регистра флагов процессора используются следующие константы масок
- 29. Пример использования процедуры Intr. прерывание с номером 18 ($12) возвращает в регистре AX объем оперативной памяти
- 30. Прерывание номер 33 ($21) стоит особняком и называется прерывание DOS. Оно дает доступ к большому количеству
- 31. Процедуры обслуживания прерываний. Процедура MsDos(VAR Regs:REGISTERS) выполняет вызов функции DOS. Результат обращения к процедуре MsDos будет
- 32. Пример использования процедуры MsDos. PROGRAM MsDosDemo; Uses DOS; Var R: registers; BEGIN r.AH: = $30; MsDos
- 33. Процедуры обслуживания прерываний. Довольно распространенной является ситуация, когда в программе необходимо определить собственные алгоритмы реакции на
- 34. Обработчики прерываний. Заголовок таких процедур должен иметь стандартный вид: PROCEDURE имя_процедуры (Flags,CS,IP,АХ,ВХ,СХ,DX,SI,DI,DS,ES,BP:WORD); INTERRUPT; begin . .
- 35. Порядок следования параметров должен точно соответствовать приведенному выше, но допускается указывать только необходимые из них.
- 36. Процедуры обслуживания прерываний. При написании процедур обработки прерываний существенными являются следующие обстоятельства: Процедура обработки прерывания не
- 37. Процедуры обслуживания прерываний. Процедура SetIntVec(IntNo :BYTE; Vector :POINTER); используется для установки нового адреса обработчика прерывания .
- 38. Процедуры обслуживания прерываний. Для того чтобы изменить реакцию системы на прерывание и определить пользовательский обработчик, SetIntVec
- 39. Процедуры обслуживания прерываний. Этот принцип использует большинство резидентных программ. Таким образом, работоспособность системы не нарушается, когда
- 40. Поэтому очень важно сохранить адрес cтарого обработчика прерывания. Для этого можно использовать процедуру GetlntVec(IntNo :BYTE; VAR
- 41. Процедуры обслуживания прерываний. Следующий пример выводит на экран содержимое всех ненулевых векторов прерываний. Uses DOS; var
- 42. Программы, резидентные в памяти. Существует еще одна процедура, относящаяся к процедурам управления процессами - это процедура
- 43. Программы, резидентные в памяти. После того как программа осталась резидентной в памяти, она передает управление командному
- 44. Пример резидентной программы. Переопределим прерывание от клавиатуры. USES Dos; CONST Segment = $B800; Col = 39;
- 45. Пример резидентной программы. PROCEDURE Int09; INTERRUPT; {процедура обработки прерывания 09} VAR Time62, Time60, Portfo : BYTE;
- 46. Пример резидентной программы. {$F-} BEGIN Activ:=FALSE; Offset:=(Row-l)*160+(Col-l) SHL 1; GetIntVec($09,@Vector) ; {сохранение старого вектора} SetIntVec($09,Addr(Int09)); {установка
- 47. Резидентные программы лучше писать с использованием языка низкого уровня.
- 48. Процедуры работы с датой и временем. Модуль Dos предоставляет программисту возможность доступа к системным часам и
- 49. Процедуры работы с датой и временем. Процедура GetDate GetDate(var year,month,day,day_of_week : WORD); возвращает текущую дату, установленную
- 50. Процедуры работы с датой и временем. Значения параметров year может принимать значения от 1980 до 2099
- 51. Пример программы, демонстрирующий использование процедур GetDate и SetDate. USES Dos; CONST days : ARRAY[0..6] OF STRING[11]
- 52. Пример программы, демонстрирующий использование процедур GetDate и SetDate. BEGIN Get_Date; {получение текущей даты} Set_Date; {установка новой
- 53. Процедуры работы с датой и временем. Процедура GetTime GetTime (var hour, minute, second, hund: WORD); возвращает
- 54. Процедуры работы с датой и временем. Значения параметров hour может принимать значения от 0 до 23
- 55. Пример программы, демонстрирующий использование процедур GetTime и SetTime. USES Dos; VAR hour,minute,second,hund : WORD; PROCEDURE Get_Time;
- 56. Процедуры работы с датой и временем. Процедура GetFTime GetFTime(var F; var Time:Longlnt); возвращает время и дату
- 57. Процедуры работы с датой и временем. Процедура UnpackTime UnpackTime(Time: Longlnt; VAR DT: DateTime); преобразовывает значение, переданное
- 58. Процедуры работы с датой и временем. Процедура SetFTime SetFTime(VAR F; Time: Longlnt); устанавливает время и дату
- 59. О том, как прошла операция установки даты создания файла, можно узнать из переменной DosError. В случае
- 60. Следует запомнить, что файл, для которого необходимо изменить дату создания, должен быть открыт для чтения. Если
- 61. Пример программы, использующей процедуры работы с временем создания файла. USES Dos; VAR ff : TEXT; hour,
- 62. Пример программы, использующей процедуры работы с временем создания файла. BEGIN Assign(ff, Paramstr(1)); GetTime(hour, minute,second,hund); WriteLn('Текущее время',FZero(hour),':',FZero(minute),':‘,FZero(second));
- 63. Процедуры и функции проверки состояния диска. Модуль Dos содержит ряд функций и процедур для работы с
- 64. Процедуры и функции проверки состояния диска. Функция DiskFree DiskFree( Drive: BYTE) :Longlnt; возвращает количество свободных байтов
- 65. Если номер диска задан некорректно, то функция DiskFree возвращает значение 1. Таким образом, всегда есть возможность
- 66. Процедуры и функции проверки состояния диска. Функция DiskSize DiskSize( Drive: BYTE) :Longlnt; возвращает общее количество байтов
- 67. Процедуры и функции проверки состояния диска. {Использование функций DiskFree и DiskSize} USES Dos; BEGIN WriteLn('Объем вашего
- 68. Процедуры и функции проверки состояния диска. Процедура GetVerify GetVerify( var Verify: BOOLEAN); используется для получения значения
- 69. Процедуры и функции проверки состояния диска. {Контроль флага VERIFY} USES Dos; VAR f : BOOLEAN; OffOn
- 70. Процедуры и функции работы с файлами. Работа с файлами в Турбо Паскале приводит к необходимости использования
- 71. Процедуры и функции работы с файлами. Для работы с файлами в модуле Dos определены следующие процедуры
- 72. Процедуры и функции работы с файлами. Процедура FindFirst FindFirst(Path :STRING; Attr :WORD; VAR S :SearchRec); Поиск
- 73. Тип SearchRec описан в модуле Dos следующим образом: Поле Attr содержит атрибуты файла, которые определяются константами
- 74. Процедура FindNext ищет следующий файл с именем и атрибутами, заданными при вызове FindFirst, если имя файла
- 75. Пример, демонстрирующий использование процедур поиска файлов. USES Dos; VAR DT : DateTime; S : SearchRec; Function
- 76. Процедуры и функции работы с файлами. Функция FSearch FSearch(Path : PathStr; DirList : STRING) : PathStr;
- 77. Использование процедуры FSearch. USES Dos; VAR F : PathStr; BEGIN F:=FSearch('NDD.EXE',GetEnv(‘PATH')); {используется системная переменная PATH для
- 78. Процедуры и функции работы с файлами. Процедура FSplit FSplit(Path : PathStr; var Dir : DirStr; var
- 79. Использование процедуры FSplit Uses Dos; Var Р: PathStr; D: DirStr; N: NameStr; E: ExtStr; BEGIN P:=FSearch('NDD.EXE',
- 80. Использование процедур работы с атрибутами файлов. USES Dos; Var F : File; FileName : PathStr; Attr
- 81. Использование процедур работы с атрибутами файлов. WriteLn('Установка нового атрибута'); WriteLn('1- только для чтения, 2- скрытый файл,');
- 82. Другие процедуры и функции. В модуле Dos есть еще несколько процедур и функций, не рассмотренных нами.
- 83. Другие процедуры и функции. Функция DosVersion DosVersion : WORD; возвращает номер версии DOS. В старшем байте
- 84. Использование функции DosVersion. USES Dos; VAR V : WORD; BEGIN V := DosVersion; WriteLn('Версия DOS ',
- 85. Другие процедуры и функции. Процедура GetCBreak GetCBreak(VAR BREAK: BOOLEAN); возвращает значение системной переменной MS-DOS BREAK. Процедура
- 87. Скачать презентацию