Лабораторные работы по системному ПО

Страница: 4/6

Команда XLAT использует значение в регистре AL в качестве относительного адреса в таблице, т.е. складывает адрес в ВХ и смещение в AL.

Содержание задания

1. Имеются следующие данные:

DATAX DW 0148H

DW 2316H

DATAY DW 0237H

DW 4052H

Закодируйте команды для сложения:

а) слово DATAX со словом DATAY;

б) двойного слова, начинающегося по адресу DATAX , на слово DATAY.

2. Поле UNPAK содержит 01040705 в распакованном десятичном формате. Напишите цикл, который преобразует это содержимое в ASCII - формат, т.е. 31343735.

3. Поле ASCA содержит значение 313733 в ASCII - формате, а другое поле ASCB содержит 35. Напишите программу, перемножающую эти числа в ASCII - формате и записывающую произведение в поле ASCPRO.

4. Определите 3 отдельные связанные таблицы, содержащие следующие данные:

а) числовые элементы - 06,10,14,21,24;

б) элементы наименований - видеокассеты, приемники, модемы, клавиатура, дискеты;

в) цены - 93.95, 82.25, 90.67, 85.80, 13.85.

Составьте программу, позволяющую вводить числовой элемент (ITEMIN) и количество (QTYIN) с клавиатуры. Разработайте программу табличного поиска элемента, равного ITEMIN. Выделите из таблиц наименование и цену. Рассчитайте стоимость (количество х цена) и выведите на экран наименование и стоимость.

Лабораторная работа № 6

Изучение свойств дисковой памяти

Цель работы: изучить основные требования к программированию функций DOS для обработки дисковых файлов; функций BIOS для записи и чтения дисковых файлов.

Общие сведения.

Обработка дисковых файлов в базовой DOS включает определение блока управления файлом (FCB - FILE CONTROL BLOCK), который описывает файл и его записи. Передача адреса блока FCB в DOS обязательна для всех дисковых операций ввода - вывода. Для выполнения операций ввода - вывода на диске в DOS необходимо определить блок FCB в области данных, который используется главным образом для обработки файлов в текущем каталоге. Блок FCB содержит описание файла и его записей в приведенном ниже формате. Пользователь должен инициализировать байты 0 . 15 и 32 .36, байты 16 .31 устанавливаются DOS:

Байты назначение

0 Указывает дисковод: Код 01 - для дисковода А;

02- для В и т.д.

1 .8 Имя файла

9 .11 Тип файла для дополнительной идентификации

12 .13 Номер текущего блока

14 .15 Логический размер записи

16 .19 Размер файла

20 .21 Дата

22 .31 Зарезервировано для DOS

32 Текущий номер записи в текущем блоке

33 .36 Относительный номер записи

Для ссылки на каждый дисковый файл программа должна содержать правильно составленный блок управления файлом. Операции ввода - вывода на диск требуют установки адреса блока FCB в регистре DX. Доступ к полям блока FCB осуществляется по этому адресу с помощью регистровой пары DS:DX. Для создания нового файла программа использует функцию 16Н в прерывании DOS INT 21H следующим образом:

MOV АН, 16Н ; создание

LEA DX, FCBNAME ; дискового файла

INT 21H ; вызов DOS

Система DOS осуществляет поиск по имени и типу файла, взятых из соответствующих полей FCB в оглавлении. Если элемент оглавления, содержащий необходимое имя (и тип) будет найден, то DOS очищает найденный элемент для нового использования, если такой элемент не будет найден, то DOS ищет свободный элемент. Затем операция устанавливает размер файла в 0 и открывает файл. На этапе открытия происходит проверка доступного дискового пространства, результат проверки устанавливается в регистре AL:

00 на диске есть свободное пространство

FF на диске нет свободного пространства

Аналогичным образом программа использует в прерывании

DOS INT 21H следующие функции:

15Н - Для последовательной записи на диск;

10Н - Для закрытия файла;

OFH - Открытие файла;

14Н - Для последовательного чтения записей с диска;

21H - Для прямого чтения записи;

22Н - Для прямой записи;

11Н и 12Н - Поиск элементов оглавления;

13Н - Удаление файла;

17Н - Переименование файла;

0ЕН - Установка текущего дисковода

Для определения выводной записи необходимо прежде всего указать начальный адрес области передачи данных (DTA - DISK TRANSFER AREA). Затем с помощью функции 1АН необходимо сообщить DOS адрес DTA. Активным может быть только один DTA.

MOV АН, 1АН ; установка адреса

LEA DX, DTANAME ; DTA

INT 21H ; вызов DOS

Дисковые операции можно программировать непосредственно на уровне BIOS. Дисковая операция BIOS INT 13H рассматривает все записи, как имеющие размер сектора, а адресацию диска осуществляет в терминах действительных номеров дорожки и сектора. Для дисковых операций чтzения, записи и верификации необходима инициализация следующих регистров:

АН - тип операции: чтение, запись, верификация или форматирование;

AL - число секторов;

СН- номер дорожки;

CL - номер головного сектора;

DH - номер головки (стороны): 0 или 1 для дискеты ;

DL - номер дисковода: 0=А, 1=В и т. д.

Реферат опубликован: 17/02/2008