Поменять попарно четные и нечетные элементы массива - Assembler

Узнай цену своей работы

Формулировка задачи:

Нужно поменять в одномерном массиве попарно четные и нечетные элементы. Использовать один массив. В данном примере используется 2 массива. Как сделать, чтобы использовался только один массив?
asm
     mov CX, N
     lea SI, A
     lea DI, B
     @k:
     mov AX, [SI]
     inc SI
     mov BX, [SI]
     mov [DI], BX
     inc DI
     mov [DI], AX
     inc SI
     inc DI
     loop @k
end;

Решение задачи: «Поменять попарно четные и нечетные элементы массива»

textual
Листинг программы
  mov cx,количество_элементов_массива/2
   lea si,array
@a: lodsb; mov al,[si] si=si+1
   xchg al,[si]
   mov [si-1],al
   inc si
   loop @a

Объяснение кода листинга программы

  1. mov cx,количество_элементов_массива/2 - Задаем переменной cx значение, равное половине количества элементов массива.
  2. lea si,array - Выделяем под переменную si адрес первого элемента массива.
  3. @a: lodsb; mov al,[si] si=si+1 - Происходит загрузка байта из памяти по адресу si в регистр al. Затем значение al сохраняется в памяти по адресу si. После чего si увеличивается на 1.
  4. xchg al,[si] - Происходит обмен значениями между регистром al и памятью по адресу si.
  5. mov [si-1],al - Сохраненное в регистре al значение записывается в память по адресу si-1.
  6. inc si - Значение si увеличивается на 1.
  7. loop @a - Происходит переход к шагу 3. И так пока si меньше cx, то есть пока не будет пройдена вся длина массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы