Собираю задачи для обновления курса на год - Assembler
Формулировка задачи:
Прошу помощи в подготовке списка небольших задач для обновления курса на этот год.
Планирую по 5 вариантов в четырёх тематиках:
- Последовательный набор команд (целые числа).
- Циклы и условия (массивы целых чисел и строки).
- Математический сопроцессор.
- SSE.
- которые либо так же могут решаться несколькими способами,
- либо показывающими преимущества использования Ассемблера.
- длинную арифметику с использованием ADC и расширенного результата MUL;
- умножение вектора 4-х float-в на матрицу (4х4) за семь команд (используя HADDPS).
- 32-битный режим
- использование стандартной библиотеки Си для взаимодействия с ОС, например, printf
Решение задачи: «Собираю задачи для обновления курса на год»
textual
Листинг программы
size_t n = 3; size_t i; int32_t xs[] = { -2000000000, -2000000000, 1000000000 }; int32_t sum; int32_t average; sum = 0; for(i=0; i<n; ++i) { sum += xs[i]; } average = sum / n; printf("%u\n", average); // Результат: 431655765
Объяснение кода листинга программы
- Объявляются переменные: — n (size_t) — 3 — i (size_t) — счётчик цикла — xs (int32_t[]) — массив из 3 элементов, содержащий -2000000000, -2000000000, 1000000000 — sum (int32_t) — сумма элементов массива — average (int32_t) — средняя величина (сумма элементов массива, делённая на количество элементов)
- Вычисляется сумма элементов массива: sum = 0 for(i=0; i<n; ++i) { sum += xs[i] }
- Вычисляется средняя величина: average = sum / n
- Выводится значение переменной average (результат: 431655765)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д