Решить небольшую задачу, используя Assembler GAS под linux

Задание закрыто
Статус рабочей области:Поиск исполнителя
Стоимость:500 рублей
Срок выполнения:1 день
Варианты оплаты:Планируется использовать Безопасную сделку
Дата публикации:2024-05-10 19:51
Обновлено:2024-05-10 20:02
Был(а) на сайте:2024-05-14 16:40

Решить небольшую задачу, используя Assembler GAS под linux

 
Задача

Необходимо написать код на Assembler GAS под linux, который решит следующую задачу:
В массиве заменить каждый из элементов суммой соседей, кроме крайних.
Пример:
Дан массив: 1, 2, 3, 4, 5 - Вывод 1, 4, 6, 8, 5
Дан массив: 11 12 13 14 - Вывод 11, 24, 26, 14
Программа консольная, ввод чисел для массива должен быть реализован через консоль

Оставлять заявки могут только авторизованные пользователи.
Евгений Г
Cпециализация: Программирование и IT
  • 500 руб1 день
Могу реализовать
Амангельды Сембаев

Чем дальше в лес, скибиди доп, доп, доп еш

Cпециализация: Веб разработка
  • 500 руб1 день
Здравствуйте, есть готовое решение вашего задания
.section .data

arr:
.int 1, 2, 3, 4, 5 # Заданный массив

size = (. - arr) / 4 # Размер массива

.section .bss

sum:
.skip size * 4 # Массив для хранения сумм соседних элементов

.section .text

.globl _start
_start:
mov $0, %ecx # Инициализация счетчика
mov $0, %ebx # Инициализация индекса для суммирования
loop:
cmp $size, %ecx # Проверка на окончание обработки
je done
mov arr(,%ecx,4), %eax # Загрузка текущего элемента

mov %ecx, %eax
cmp $0, %ecx # Проверка на первый элемент массива
je not_first
add -4(%eax), %eax # Суммирование с предыдущим элементом
not_first:
cmp $(size - 1), %ecx # Проверка на последний элемент массива
je not_last
add 4(%eax), %eax # Суммирование с следующим элементом
not_last:
mov %eax, sum(,%ecx,4) # Сохранение суммы в массиве sum

inc %ecx # Увеличение счетчика
jmp loop
done:
mov $0, %eax # Выход из программы
mov $60, %eax # Системный вызов для завершения программы
xor %edi, %edi # Код возврата 0
syscall
Здравствуйте, готов выполнить!

Оставлять заявки могут только авторизованные пользователи.