Переставить местами соседние элементы массива с четными и нечетными индексами - 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
Объяснение кода листинга программы
Код выполняет следующие действия:
- Создаёт в начале работы строковый массив из 80 байтов, заполняет его нулями.
- Выводит на экран сообщение «Create array: $».
- Сохраняет исходный массив в стеке.
- Выводит на экран сообщение «Result......: $».
- Выполняет цикл по перестановке четных и нечетных байтов в массиве.
- Выводит на экран переставленные байты.
- Выполняет цикл вывода оставшихся байтов.
- Выполняет выход из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д