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