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

Установка флагов


    Есть три команды, которые непосредственно управляют состоянием
    флага переноса.  Команды STC, CLC, CMC соответственно могут
    устанавлмвать, сбрасывать и изменять флаг переноса.  Этот флаг -
    единственный, которому уделено такое внимание, и в первую очередь,
    благодаря важности флага переноса при операциях с повышенной
    точностью.    Флаг переноса критичен на промежуточных шагах любых
    многословных операций.  Возможность сбрасывать или устанавливать
    флаг переноса может помочь при циклической обработке с повышенной
    точностью.    На Фиг. 4.31 показан пример использования команды CLC.
    Цикл внутри примера складывает отдельные байты двух 10-разрядных
    упакованных десятичных чисел.  Программа выполняет цикл пять раз,
    так как за каждую итерацию она обрабатывает две цифры.  Информация


    о переносе из одного оборота цикла в другой передается через флаг
    переноса.  Команда CLC сбрасывает флаг переноса перед первым циклом
    для того, чтобы перед первым сложением не было переноса.  Флаг
    переноса также важен в операциях сдвига, где он становится девятым
    или семнадцатым битом регистра во время выполнения операции.
 
      Два флага состояния микропроцессора имеют специальные команды
    работающие с ними. Программа может установить или сбросить маску
    прерываний соответственно командами STI и CLI. Команда STI включает
    систему прерываний микропроцессора 8088, позволяя ему реагировать
    на внешние прерывания. Команда CLI блокирует систему внешних
    прерываний.
           Microsoft (R) Macro Assembler Version 5.00              1/1/80 04:02:06
           Фиг. 4.31 Десятичная арифметика повышенной точности    Page   1-1
 
                                         PAGE    ,132
                                         TITLE   Фиг. 4.31 Десятичная арифметика повышенной точности
 
            0000                   CODE    SEGMENT
                                         ASSUME  CS:CODE,DS:CODE
 
            = 0005                       NUMBER_LENGTH   EQU     5                 ; 5 байт для упакованного числа



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