Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #define length 10
- using namespace std;
- //вариант 20:
- //Найти произведение квадратов всех отрицательных элементов массива A = {a[i]}
- void calc(int* array) {
- int flag = 0;
- int result = 1;
- _asm {
- xor esi, esi; подготовим регистр индекса
- mov ebx, array; ebx указывает на начало массива
- mov ecx, length
- mov edx, 0
- begin_loop:
- mov eax, [ebx + esi * 4]; определим текущий элемент
- cmp eax, 0; сравнение a[i] и 0
- jg end_loop; если больше, завершим цикл
- mul eax; возводим число в квадрат
- add flag, 1
- mul result
- mov result, eax
- end_loop:
- inc esi; переходим к следующему элементу
- loop begin_loop; повторяем для всех элементов массива
- exit:
- }
- if (flag == 0)
- result = 0;
- cout << "Result assembler calc = " << result << endl;
- }
- int main() {
- int array[length];
- for (int i = 0; i < length; i++) {
- int s;
- cout << "Enter " << i + 1 << " element of array: ";
- cin >> s;
- array[i] = s;
- }
- calc(array);
- int res = 1;
- int a;
- bool res_flag = false;
- for (int i = 0; i < length; i++) {
- if (array[i] < 0) {
- res *= (array[i] * array[i]);
- res_flag = true;
- }
- }
- if (res_flag != 1)
- res = 0;
- cout << "Result C++ calc = " << res << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement