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

Арифметический пример


    Чтобы проиллюстрировать функции, которые мы рассмотрели в
    предыдущих разделах, давайте решим арифиетическую задачу на языке
    ассемблера.  Пример прост, но использует многие команды.  Задача
    заключается в вычислении частного двух арифметических выражений, в
    которых некоторые числа постоянны, а другие переменны.  Все числа
    являются 16=битовыми целыми числами со знаком.
 
      Формула вычислений:
                        A * 2 + B * C
                  X = ------------------
                          D - 3
 


      Эта задача решается подпрограммой на языке ассемблера,
    изображенной на Фиг. 4.16. Подпрограмма сначала выполняет два
    умножения. Так как микропроцессор 8088 всегда помещает результат
    16=битового умножения в пару регистров DX:AX, в примере результат
    первого умножения переносится в пару регистров BX:CX перед
    выполнением второго умножения. Когда оба умножения завершены,
    программа выполняет сложение числителя. Поскольку умножение дает
    32=битовые результаты, в программе требуется сложение повышенной
    точности. Это сложение оставляет результат в DX:AX. В примере
    знаменатель вычисляется в регистре CX, а затем на него делится
    числитель. Программа записывает частное из регистра AX в переменную
    результата X. Остаток в этой задаче игнорируется.

           Microsoft (R) Macro Assembler Version 5.00              1/1/80 04:01:10
           Фиг. 4.16 Пример арифметических вычислений              Page   1-1
 
 
                                         PAGE    ,132
                                         TITLE   Фиг. 4.16 Пример арифметических вычислений
 
                                   ;-------------------------------------------------------------
                                   ; Производятся вычисления по формуле
                                   ;
                                   ;              A * 2   +   B * C
                                   ;        X  =      -------------------



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