а запись DATE_WORD формирует эту
а запись DATE_WORD формирует эту 16-битовую область данных. Как мы
увидим ниже, существуют способы определения для полей записей
значений по умолчанию и их изменения. В данном примере мы ничего не
делали для изменения стандартных нулевых значений каждого из
полей.
Приведенная на Фиг. 6.15 программа иллюстрирует не только
структуру оператора RECORD, но и некоторые операции, которые
упрощаются благодаря этому оператору. В первой части программы
открывается файл, имя которго указано в блоке FCB. Остальная часть
программы извлекает из FCB информацию о дате и перебрасывает
отдельные поля в регистры микропроцессора 8088.
Во-первых, программа выделяет в дате из блока FCB значение
года: переслав слово данных DATE в регистр AX, программа обнуляет в
нем командой AND значения, относящиеся к месяцу и числу. Обратите
здесь внимание на непосредственный операнд MASK YEAR. Так как YEAR
- это поле записи, то оператор MASK возвращает значение, которое
выделяет в данном слове поле YEAR. В данном случае это значение
равно 0FE00H. Первые 7 бит в нем - единицы, а остальные биты
обнулены. Это значение маски соответстувет битам, которые формируют
значения YEAR в слове данных. В результате логического умножения
данного значения и всей остальной записи остается только поле
YEAR.
Следующими командами программа перемещает поле YEAR в правый
конец слова. Полю YEAR соответствует значение, равное сдвигу,
который необходим для перемещения данного поля до правой границы
слова. В данном случае это значение равно девяти. Сдвиг вправо на 9
бит обращает значение года в число в регистре AL. (Следует помнить,
что DOS кодирует год в виде числа в перделах от 0 до 119. Эти
значения соответствуют годам от 1980 до 2099).
В последующей группе команд программа выделяет из записи поле
MONTH. Здесь также используются оператор MASK и значения сдвигов,
из записи DATE_WORD. Подобным образом программа выбирает из записи
Содержание Назад Вперед