Вычисление выражения по формуле. - 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
Объяснение кода листинга программы
- Создание локальных переменных.
- Установка размерности модели памяти.
- Определение размера стека.
- Определение блока данных: переменная
Aтипа байт и переменнаяRтипа двойного слова. - Определение начала процедуры
main. - Установка значения регистра
axв значение сегмента данныхds. - Вычитание 2 из переменной
Aи сохранение результата в регистреbl. - Добавление 6 к переменной
Aи сохранение результата в регистреal. - Умножение регистров
alиblи сохранение результата в регистреbx. - Умножение переменной
Aна 4 и сохранение результата в регистреax. - Умножение значений регистра
axи регистраbx, результат помещается в регистрыdx(старшая половина) иax(младшая половина). - Сохранение результатов вычислений в переменную
R. - Завершение процедуры
main. - Завершение программы.