Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program AssemblerToDelphi;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- const
- N = 10;
- var
- Arr, NewArr: array [1..N] of Integer;
- i, Sum, Divider, ByteN: Integer;
- j: Integer;
- begin
- ByteN := SizeOf(Integer) * N;
- Sum := 0;
- Writeln('Введите массив:');
- for i := 1 to N do
- begin
- Write('A[', i, '] = ');
- Readln(Arr[i]);
- end;
- Writeln;
- Write('Введите делитель: ');
- Readln(Divider);
- if Divider <> 0 then
- begin
- Writeln;
- asm
- mov ECX, dword[Divider]
- mov ESI, 0
- mov EBX, 0
- @GetElement:
- // Поделить число
- xor EDX, EDX
- mov EAX, dword[Arr + EBX]
- div ECX
- // Проверить остаток
- cmp EDX, 0
- jne @StartLoop
- mov EDX, dword[Arr + EBX]
- add Sum, EDX
- inc ESI
- @StartLoop:
- add EBX, 4
- cmp dword[ByteN], EBX
- je @Leave
- jmp @GetElement
- @Leave:
- mov [i], ESI
- end;
- Writeln('Cумма элементов, кратных ', Divider, ' равна ', Sum);
- Writeln('Количесвто элементов, кратных ', Divider, ' равна ', i);
- end
- else
- Writeln('Делитель равен нулю!');
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement