Assembler для начинающих



         

Записи - часть 4


    а запись 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. Подобным образом программа выбирает из записи



Содержание  Назад  Вперед