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

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

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

В одномерном массиве переставить местами соседние элементы с четными и нечетными индексами.

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

textual
Листинг программы
ORG 100h
JMP start
 
mess0   DB  13,10,'Create array: $'
mess1   DB  13,10,'Result......: $'
buff    DB  80,0,80 DUP(0)
 
start:
   MOV   AH,9              ;
   MOV   DX,mess0          ;
   INT   21h               ;
   MOV   AH,0Ah            ; сохраняем массив
   MOV   DX,buff           ;
   INT   21h               ;
   MOV   AH,9              ;
   MOV   DX,mess1          ;
   INT   21h               ;
 
   XOR   CX,CX             ;
   MOV   CL,[buff+1]       ; длина массива в CX
   SHR   CL,1              ; читать будем словами, поэтому CX/2
   MOV   SI,buff+2         ; адрес массива
print:
   LODSW                   ; берём 2 байта из SI в AX
   PUSH  AX                ; запомним их в стеке
   XCHG  AH,AL             ; переставим байты местами
   INT   29h               ; выводим AH на экран
   POP   AX                ;
   INT   29h               ; теперь АL..
   LOOP  print             ;
 
exit:
   XOR   AX,AX             ; выход!
   INT   16h
   INT   20h

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

Код выполняет следующие действия:

  1. Создаёт в начале работы строковый массив из 80 байтов, заполняет его нулями.
  2. Выводит на экран сообщение «Create array: $».
  3. Сохраняет исходный массив в стеке.
  4. Выводит на экран сообщение «Result......: $».
  5. Выполняет цикл по перестановке четных и нечетных байтов в массиве.
  6. Выводит на экран переставленные байты.
  7. Выполняет цикл вывода оставшихся байтов.
  8. Выполняет выход из программы.

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


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

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

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