Найти сумму на языке assembler

S=X^2+3X+5, при X от 0 до 20

Не могу правильно просуммировать { S=X^2+Х3+5 X=>0 to 20}

var
 S: Word;
begin
 Write ('найдем сумму выражения S=X^2+Х3+5 при х изменяющемся на интервале');
 Writeln (' X=1 до 20');
 asm
  mov cx,20
  mov dx,0
  mov bx,0
@1:
  add dl,1

  mov al,dl
  mul dl
  mov bx,3
  mul bx
  
  add bx,1
  add bx,ax

  loop @1
  mov s,bx
end;
 Writeln ('S= ',S);
end.

Ответы (1 шт):

Автор решения: Harry

Ну, раз вам нужна просто вставка... Главная ваша неприятность - что 20*20 уже выходит за рамки байта. Еще одна ошибка - у вас цикл при cx, равном 0, не отрабатывает. Дальше я просто не смотрел, набросал вам вставку - правда, я не знаю, как там на предмет вставок в pascal, но в С/С++ она честно отрабатывает:

int S = 0;
__asm {
    mov   ecx, 21
Loops:
    dec   ecx
    mov   eax,ecx
    add   eax,3
    imul  eax,ecx
    add   eax,5
    add   S,eax
    cmp   ecx,0
    jne   Loops
}
→ Ссылка