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



              

Кассета - часть 2


    потребовалось сигналу кассеты, чтобы перейти из одного состояния в
    другое. Сложение двух полубитовых переходов дает общую длительность
    цикла этого бита. Так как времена циклов у нулей и единиц разные,
    программа READ_BYTE может определить значение текущего бита. Из
    восьми прочтенных битов она формирует байт.
 
      Программа READ_HALF_BIT иллюстрирует использование канала 0
    таймера для целей измерения времени. BIOS замораживает значение
    счетчика таймера, а затем читает его в регистр AX. Использование
    значения 0, загружаемого в счетчик 0 таймера позволяет вычитать
    любые два значения таймера, не анализируя, какое из них больше; в
    любом случае получится верная разность.
 
      Программа управления кассетным магнитофоном BIOS содержит в
    себе подпрограммы, выполняющие четыре функции. Две из них - блочные
    операции ввода-вывода, чтение блока и запись блока. Для
    эффективного использования ленты данные записываются на нее блоками
    по 256 байт. BIOS проверяет правильность ввода этих блоков с
    помощью циклического избыточного кода CRC (Cyclic Redundacy Check).
    Проверка ошибок с помощью CRC выявляет почти все ошибки, которые
    могут возникнуть на ленте. Это позволяет IBM PC использовать
    кассеты в качестве средства памяти с уверенностью, что вновь
    читаемые с них данные правильны. Кроме того, BIOS помещает данные в
    блоки в связи с несовершенством механизма кассетного магнитофона,
    проявляющемся при записи блоков любого размера. Программа обязана
    ждать до тех пор, пока двигатель кассетного магнитофона не
    включится и разгонится до нужной скорости. Программа также должна
    записывать на ленту синхронизирующие импульсы для того, чтобы
    микропроцессор вошел в синхронизацию с данными тогда, когда они
    будут читаться. Наконец, BIOS записывает слово CRC и конечный байт
    в конце каждого блока. Вся эта дополнительная работа происходит с
    любым блоком данных, независимо от того, один это байт или 10000



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