
- •8.Файл config.Sys
- •9. Файлы autoexec. Bat
- •10. Начальная загрузка dos
- •11. Структурное программирование
- •12. Концепция модульного программирования.
- •13. Процедуры в языке assembler
- •14. Директивы extern и public
- •15. Передача данных процедуру через common области.
- •16.Использование директив extern и public для передачи данных в процедуру.
- •17. Передача аргументов через стек
- •18. Возврат результата из процедуры.
- •19. Связь ассемблера с языками высокого уровня
- •20. Понятия процесса и его состояния
- •21. Асинхронные параллельные процессы и способы их синхронизации
1.Створення файлу
Функція 16h . Створення і відкриття файла для читання/запису (із використанням FCB) Створює і відкриває новий файл або відкриває наявний файл і обрізає його до нульової довжини. На вході: AH 16h DS:DX Покажчик на невідкритий FCB. На виході: AL 00h , якщо файл створений, FFh , якщо файл нестворений. Обчислювальна мережа: вимагає права доступу до створення. Відкритому файлу привласнюється довжина 0. Таким чином, ця функція використовується для відкриття файлів виводу, у той час як функція 0Fh використовується для відкриття файлів уведення(вводу). Ця функція є застарілою. Краще використовувати для створення файлів функції нового стилю, такі, наприклад, як функція 3Ch.
2.Відкриття існуючого файлу
Функція 0Fh. Відкриття файла (із використанням FCB) Відкриває існуючий файл із використанням блоку керування файлами (FCB). На вході: AH 0Fh DS:DX Покажчик на невідкритий FCB . На виході: AL 00h якщо файл успішно відкритий, FFh якщо файл незнайдений . Якщо код дисководу 0 (номер дисководу встановлюється за умовчанням), то ця функція змінить його на номер поточного дисководу, де A=1, B=2, і т.д. Поле довжини запису встановлюється ДОС у 80h (128) байтів. Якщо потрібно використовувати інше значення, то потрібно змінити це поле після того, як файл буде відкрито, і до початку виконання будь-яких операцій із диском. Якщо довжина запису менше 64 байтів, то використовуються всі чотири байти цього поля, інакше використовуються тільки три молодших байти.
3.Запис і читання із файлу
Функція 15h . Послідовний запис у файл (із використанням FCB) Заносить запис із буфера передачі даних DTA за адресою, яку одержує зі значень поля поточного блоку і поля поточного запису; потім збільшує значення вмісту цих полів. На вході: AH 15h DS:DX Покажчик на відкритий FCB . На виході: AL 00h , якщо запис був виконаний успішно, 01h , якщо диск переповнений, 02h , якщо буфер передачі даних (DTA) занадто малий. Дані, що повинні бути записані, беруться з поточного буферу передачі даних (DTA). Використовуйте функцію 1Ah для установки DTA. Якщо буфер занадто малий для обробки запису і запис пересланий не цілком, то генерується код помилки 2. Якщо переданий запис не заповнить весь сектор, то ДОС заносить його в буфер для наступної передачі, коли таких записів набереться на цілий сектор. Якщо заданий файл відкритий тільки для читання, то запис не робиться. Функція 14h . Послідовне читання із файла (із використанням FCB) Читає черговий запис із файла, потім збільшує поле поточного блока і поточного запису в FCB. На вході: AH 14h DS:DX Покажчик на відкритий FCB .На виході: AL 00h , якщо читання було успішним,01h , якщо зустрівся знак кінця файла EOF, не було прочитано ніяких даних 02h , якщо буфер передачі даних (DTA) занадто малий і запис пересланий не цілком,03h , якщо зустрівся знак EOF і прочитана частина запису. Дані зчитуються в поточний буфер передачі даних (DTA). Використовуйте функцію 1Ah для установки DTA. Якщо буфер DTA занадто малий, то буде генеруватися код помилки 2. Якщо зустрінеться символ EOF до того, як був прочитаний весь запис цілком, то залишок запису заповнюється на задану довжину нулями.
4.Закриття файлу
Функція 10h . Закриття файла (із використанням FCB) Закриває файл і заносить у каталог інформацію про зміни файла, використовуючи блок керування файлами FCB. На вході: AH 10h DS:DX Покажчик на відкритий FCB . На виході: AL 00h , якщо файл закритий успішно, FFh , якщо файл незнайдений .Якщо закривати файл, розташований на гнучкому диску, то ДОС намагається визначити, чи був замінений диск у дисководі і поверне значення 0FFh у AL, якщо це так. Ця операція не дуже надійна для версій ДОС, більш ранніх, ніж 3.0; використання цієї функції в ДОС 2 із заміною диску в дисководі може призвести до небажаних наслідків.
5.Функции чтения и записи с использованием дискриптора стандартных устройств.
Чтение-запись в файле производятся с текущей файловой позиции, на которую указывает файловый указатель. Функция 42h MS DOS предоставляет возможности как для начального, так и для текущего позиционирования файлового указателя для последующей операции ввода-вывода.Вход: АН = 42h; BX = дескриптор файла, полученный при его открытии; AL = начальное положение в файле, относительно которого производится операция чтения-записи (OOh — смещение (беззнаковое значение в CX:DX) от начала файла; O1h — смещение (значение со знаком в CX:DX) от текущей позиции в файле; 02h — смещение (значение со знаком в CX:DX) от конца файла); CX:DX = смещение новой позиции в файле относительно начальной.Выход: CF = 0 — DX:AX = значение новой позиции в байтах относительно начала файла; CF = 1 — АХ = код ошибки: 1 — неверное значение в AL; 6 — недопустимый дескриптор файла.
Методы позиционирования, заданные величиной в AL, по-разному трактуют значение в паре регистров CX:DX. Метод al = 00 трактует значение в CX:DX как абсолютное. Два других метода (al = 01 и al = 02 ) трактуют содержимое CX:DX как значение со знаком.Значение в СХ: DX, позиционирующее указатель, может указывать за пределы файла. При этом выделяются два случая:значение в СХ: DX указывает на позицию перед началом файла — в этом случае последующая операция чтения-записи будет выполнена с ошибкой;значение в СХ:DX указывает на позицию за концом файла — в этом случае последующая операция записи приведет к расширению файла в соответствии со значением в CX:DX. Запись в файл производится функцией 40h с текущей позиции файлового указателя. Вход: АН = 40 h; ВХ = дескриптор файла; СХ = количество байтов для записи;
DS:DX — указатель на область, из которой записываются данные. Выход: CF = 0 — АХ = число действительно записанных байтов в файл или устройство; CF = 1 — АХ = код ошибки: 5 — в доступе отказано; 6 — недопустимый дескриптор.Если при вызове функции 40h регистр СХ равен нулю, то данные в файл не записываются и он усекается или расширяется до текущей позиции файлового указателя. Если СХ не равен нулю, то данные в файл записываются начиная с текущей позиции файлового указателя. Операция записи также продвигает файловый указатель на число действительно записанных байтов.Положение файлового указателя можно изменять явно с помощью функции 42h.
6.EXE и COM программы.
У каждого из обоих типов файлов есть свои преимущества.Главное различие между файлами типа .COM и типа .EXE связано с форматом записи соответствующего объектного файла на дискете. Оба типа файлов являются программами, записанными на машинном языке. Программа, записанная в файле типа .COM может сразу выполняться. DOS может непосредственно загрузить его в память машины с дискеты. После этого DOS передает управление в сегмент памяти, отведенный для команд, в точку со смещением 100H. Файл типа .EXE непосредственно выполнен быть не может. У соответствующего объектного файла, хранящегося на дискете, имеется заголовок. В нем содержится информация, сгенерированная редактором связей. Наиболее важная ее часть относится к информации, связанной с перемещением. В то время, как у файла типа .COM перемещаем один сегмент команд, у файла типа .EXE могут быть перемещены многие различные сегменты. Это ограничивает максимальный размер файла .COM 64 кбайтами, если только программа не подгружает еще и другие сегменты. Файл типа .EXE может содержать ряд сегментов, которые динамически перемещаются в пределах программной области. Во время ассемблирования программа расположена в каком-то определенном месте памяти. Как было ранее установлено, ассемблер автоматически начинает каждый сегмент со смещением 0. В ассемблерных листингах рядом с некоторыми адресами стоят символы R. Это означает, что данный адрес является перемещаемым. Если программа сдвигается так, что ее начало будет иметь смещение, отличное от 0, то упомянутый адрес должен быть изменен. Обычно перемещением занимается редактор связей. Однако пересчет значений некоторых адресов не может быть выполнен до загрузки программы. В каждом файле типа .EXE имеется информация о таких адресах. Файл типа .COM не является перемещаемым. У такого файла отсутствует информация, необходимая для перемещения. Вместо этого у программы, составляющей файл типа .COM, должен быть перемещаем сегмент команд. Это означает, что хотя сам сегмент команд можно модифицировать, начальное смещение всегда должно быть одним и тем же. В такой программе все смещения должны оставаться неизмененными. Кроме того, от программиста требуется предусмотреть, чтобы при любой операции с сегментными регистрами (например, запись в сегментный регистр полученного значения) всегда производилось обращение к регистру текущего сегмента команд. Примером правильной программной последовательностью для записи в регистр DS текущего значения сегмента команд будет: PUSH CS POP DS В головной метке файла типа .EXE задаются значения регистров CS, IP, SS и SP. Значения регистров DS и ES DOS устанавливает таким образом, чтобы они указывали на тот сегмент, в который загружается программа. Регистр CS указывает на сегмент, который был идентифицирован как сегмент содержащий стартовый адрес программы. Если в файле типа .COM программа должна иметь начальное смещение в сегменте команд равным 100H, то в программном файле типа .EXE начальный адрес может иметь другое значение. Как показано ниже, значение этого адреса может содержаться в операторе END: END START_LOCATION Преимущества файла типа .COM состоит в том, что в этом случае регистр CS указывает на PSP, а в файле типа .EXE - нет. Прерывания 20H и 27H, связанные с завершением выполнения программы и передачей управления DOS, требуют, чтобы во время прерывания регистр указывал на PSP. В случае файла типа .EXE это осуществить сложно.
7.Структура MS DOS
Операционная система MS DOS — самая распространенная ОС на 16-разрядных персональных компьютерах. Она состоит из следующих основных модулей: базовая система ввода/вывода (BIOS);блок начальной загрузки (Boot Record);модуль расширения базовой системы ввода/вывода (IO.SYS);модуль обработки прерываний (MSDOS.SYS);командный процессор (COMMAND.COM);утилиты MS DOS. Каждый из указанных модулей выполняет определенную часть функций, возложенных на ОС. Места постоянного размещения этих модулей различны. Так, базовая система ввода/вывода находится в постоянном запоминающем устройстве (ПЗУ), а не на дисках, как все остальные модули.Базовая система ввода/вывода (BIOS) выполняет наиболее простые и универсальные услуги операционной системы, связанные с осуществлением ввода-вывода. В функции BIOS входит также автоматическое тестирование основных аппаратных компонентов (оперативной памяти и др.) при включении машины и вызов блока начальной загрузки DOS.Блок начальной загрузки (загрузчик) — это очень короткая программа, единственная функция которой заключается в считывании с диска в оперативную память двух других частей DOS — модуля расширения базовой системы ввода/вывода и модуля обработки прерываний.Модуль расширения базовой системы ввода/вывода дает возможность использования дополнительных драйверов, обслуживающих новые внешние устройства, а также драйверов для нестандартного обслуживания внешних устройств.Модуль обработки прерываний реализует основные высокоуровневые услуги DOS, поэтому его и называют основным.Командный процессор DOS обрабатывает команды, вводимые пользователем.Утилиты DOS — это программы, поставляемые вместе с операционной системой в виде отдельных файлов. Они выполняют действия обслуживающего характера, например, разметку дискет, проверку дисков и т.д.
8.Файл config.Sys
CONFIG.SYS представляет собой текстовый файл, каждая строка которого может содержать команду конфигурирования системы.Все команды конфигурирования системы независимы в смысле синтаксиса и могут указываться в любом порядке. После изменения содержимого команд файла CONFIG.SYS для конфигурации DOS в соответствии с новыми командами следует перезагрузить систему. Интерактивный файл CONFIG.SYS (с многовариантной настройкой)Интерактивный файл CONFIG.SYS определяет различные способы конфигурирования DOS. Этапы разработки интерактивного файла CONFIG.SYS таковы:Принятие решения о количестве и предназначении вариантов конфигурирования DOS;Определение перечня команд DOS для каждого варианта конфигурирования;Выделение общих фрагментов из сформированных на предыдущем этапе перечней;Разработка структуры стартового меню и стартовых подменю, а также определение их взаимосвязей (составление перечня пунктов и определение уровня вложенности подменю);Кодирование стартовых меню и подменю командами конфигурирования DOS;Формирование блоков конфигурации;Создание файла CONFIG.SYS. Интерактивный файл CONFIG.SYS состоит из последовательности блоков конфигурации, которой могут предшествовать не связанные с организацией разветвлений команды конфигурирования DOS.Блок конфигурации представляет собой последовательность команд конфигурирования, которым предшествует заголовок. Заголовок размещается в отдельной строке и состоит из имени блока, заключенного в квадратные скобки. Стартовое меню - это меню, которое отображается на экране первым при обработке файла CONFIG.SYS. Его организация является основой разработки интерактивного файла CONFIG.SYS. Стартовое меню кодируется в виде отдельного блока со стандартным именем MENU, который должен быть первым в последовательности блоков конфигурации.
9. Файлы autoexec. Bat
Файл autoexec.bat, или файл начальной загрузки, выполняется при каждом запуске DOS. В этом файле записан вызов всех тех программ, которые должны запуститься перед тем, как пользователь начнет свою работу с системой. Например, там может стоять вызов русификатора, драйвера мыши. Находиться этот файл должен в корневом каталоге загрузочного диска. Если он не найден, система при запуске попросит подтвердить правильность системной даты и времени. Выглядит этот файл как любой пакетный файл и строится по тем же самым принципам. В MS-DOS AUTOEXEC.BAT исполняется после старта командного интерпретатора, который загружается после обработки команд из файла конфигурации CONFIG.SYS c помощью директивы shell=.Вот пример обычного файла autoexec.bat от системы MS-DOS 6.22:@ECHO OFF PROMPT $P$G PATH=C:\DOS;C:\UTILITES;D:\TASM; SET BLASTER=A220 I5 D1 P330 KEYRUS.COM MOUSE.EXE
10. Начальная загрузка dos
Загрузка MS DOS происходит в несколько этапов:1)Вначале специальная процедура BIOS запускает программу начальной загрузки, хранящуюся в загрузочном секторе системного диска (диска, с которого загружается ОС).2)Эта программа в свою очередь загружает системное ядро - файлы IO.SYS и MSDOS.SYS.3)Затем загружается командный процессор - файл COMMAND.COM. Загрузка, проверка их синтаксиса, выполнение их. 4)Загрузка драйверов утройств5)Загрузка стартовых файлов CONFIG.SYS, AUTOEXEC.BAT