Вычисление выражения по формуле. - Assembler (223058)

Узнай цену своей работы

Формулировка задачи:

Как сделать? (A-2)(A+6)(A*4)

Решение задачи: «Вычисление выражения по формуле.»

textual
Листинг программы
LOCALS
 
.model small
 
.stack 100h
 
.data
        A       db      100
        R       dd      0
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        mov     al,     A       ;bl=A-2
        sub     al,     2
        mov     bl,     al
 
        mov     al,     A       ;al=(A+6)
        add     al,     6
        mul     bl              ;bx=(A-2)*(A+6)
        mov     bx,     ax
 
        mov     al,     A       ;ax=A*4
        mov     ah,     0
        shl     ax,     1
        shl     ax,     1
 
        mul     bx              ;(dx:ax)=(A-2)*(A+6)*(A*4)
 
        mov     word ptr R,     ax
        mov     word ptr R+2,   dx
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

Объяснение кода листинга программы

  1. Создание локальных переменных.
  2. Установка размерности модели памяти.
  3. Определение размера стека.
  4. Определение блока данных: переменная A типа байт и переменная R типа двойного слова.
  5. Определение начала процедуры main.
  6. Установка значения регистра ax в значение сегмента данных ds.
  7. Вычитание 2 из переменной A и сохранение результата в регистре bl.
  8. Добавление 6 к переменной A и сохранение результата в регистре al.
  9. Умножение регистров al и bl и сохранение результата в регистре bx.
  10. Умножение переменной A на 4 и сохранение результата в регистре ax.
  11. Умножение значений регистра ax и регистра bx, результат помещается в регистры dx (старшая половина) и ax (младшая половина).
  12. Сохранение результатов вычислений в переменную R.
  13. Завершение процедуры main.
  14. Завершение программы.

Оцени полезность:

11   голосов , оценка 4.364 из 5