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


         

Эта программа программа выделяет один


           0008  58                           POP     AX              ; Восстановление AX
           0009  03 C1                  ADD     AX, CX          ; AX <- исходное значение * 9
           000B  59                           POP     CX              ;
           000C  C3                           RET
           000D                   MUL9    ENDP
 
                                  ;--------------------------------------------------
                                  ; Эта программа программа выделяет один бит в
                                  ; регистре AX, номер которого задан в регистре CL
                                  ;--------------------------------------------------
 
           000D  53                           PUSH    BX              ; Сохранение регистра BX в стеке
           000E  BB 0001                      MOV     BX, 1     ; Создание маски (1 в разряде 0 регистра BX)
           0011  D3 C3                  ROL     BX, CL          ; Сдвиг маски
           0013  23 C3                  AND     AX, BX          ; Выделение требуемого разряда
           0015  5B                           POP     BX              ; Восстановление регистра BX
           0016  C3                           RET
 
           0017                   CODE    ENDS
                                        END
 
            Фиг. 4.21 Примеры сдвига
 
      Второй пример на Фиг. 4.21 показывает, как использовать сдвиг
    на переменное число разрядов для выборки отдельного бита. Этот
    фрагмент предполагает, что исходная информация находится в регистре
    AX, а регистр CL содержит номер бита, выбираемого из регистра AX:
    если содержимое регистра CL равно 8, из регистра AX выбирается бит
    8. Программа сдвигает маску в регистре BX на указанную в регистре
    CL позицию, а команда AND изолирует выбранный бит.
 
      Для того чтобы этот пример работал правильно, число в регистре
    CL должно быть в диапазоне 0 - 15. Можно было бы использовать
    команду AND, чтобы выделить младшие четыре бита значения сдвига в
    регистре CL; команда AND CL, 0FH гарантирует, что число в регистре
    CL находится в пределах 0 - 15. Вы можете изменить этот пример так,
    чтобы выделить более одного бита из слова. Можно было бы выделить
    тетраду из 16=битового слова, заменив значение маски в регистре BX.

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