Вычислить значение выражения Y=(3*C^2-3*C-7)/8 - Assembler

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

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

Помогите,пожалуйста, нужно срочно написать программу в Ассемблере,которая бы считала по формуле: Y=(3*C^2-3*C-7)/8

Решение задачи: «Вычислить значение выражения Y=(3*C^2-3*C-7)/8»

textual
Листинг программы
mov ax,C
mov dx,ax
dec ax
imul ax,3  ; 3*(C-1)
imul dx  ; 3*С*(С-1)
sub ax,7
sbb dx,0  ; 3*С*(С-1)-7
shrd ax,dx,3
sar dx,3  ; делим на 8, результат в паре DX:AX

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

  1. Переменная C помещается в регистр AX.
  2. Делитель 8 помещается в регистр DX.
  3. Регистр AX уменьшается на 1.
  4. Регистры AX и DX умножаются на 3.
  5. Результат вычитается из 7.
  6. Результат вычитания помещается в регистр DX, а в регистр AX записыруется знак отнятия (0).
  7. Результат делится на 8 с использованием регистра DX как делителя.

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

14   голосов , оценка 3.429 из 5