@Alertoso

Могу ли я лучше сделать?

Могу ли я лучше сделать эту лабу?
Условие: вычислить сумму массива после минимального элемента.
Program Lab6;

{$APPTYPE CONSOLE}

Uses
  Windows;

Const
  N = 10;

Label MinAndMax, M, Exit, sum, m2, exit2;

Var Num1, Num2, Res, I, summ: Integer;
  Arr: Array[1..N] of Integer;
  Min, Max, ResOfSub: Integer;

Begin
  SetConsoleCP(1251);
  SetConsoleOutPutCP(1251);
  Randomize;
  writeln(' ---------------------------------------');
  writeln('|                 Array                 |');
  writeln(' ---------------------------------------');
  for I:=1 to N do
  Begin
    Arr[I]:=Random(100);
    write('|');
    write(Arr[i]:3);
  End;
  write('|');
  writeln;
  ResOfSub:=11;
  writeln(' ---------------------------------------');
  asm
      lea   esi, [arr]
      mov   ecx,  N

      MinAndMax:
          lodsd
          cmp     ebx, eax
          ja      M
          loop    MinAndMax
          jmp     Exit

      M:
          mov   ebx, eax
          mov   edx, ecx
          loop    MinAndMax

      Exit:
      mov   [min], ebx
      sub   [ResOfSub], edx

      lea   esi, [arr]
      mov   ecx,  N
      Sum:
        lodsd
        cmp edx, ecx
        ja   M2
        loop  Sum
        jmp Exit2

      M2:
        add  [summ], eax
        loop  sum

      Exit2:
  End;
  writeln(Min);
  writeln(ResOfSub);
  writeln(summ);
  readln
End.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
@VitalyChaikin
до инструкции cmp ebx, eax нет инициализации ebx это наверняка ошибка :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы