Виктория Никишина
Виктория Никишина

Алгоритм перестановки массива (ассемблер)

Пишу лабу под ассм. Суть: дан массив чисел. Необходимо сделать перестановку по принципу: 1, n, 2, (n-1), 3, (n-3) и т. д. Дополнительный массив использовать не хотелось бы, да и памяти хочется поменьше задействовать. Может кто знает более компактный алгоритм. Мне на словах, код я сам напишу )

Извиняюсь, опечатался. Перестановка: 1, n, 2, (n-1), 3, (n-2), 4... и тд

ГТ
Галина Тюрина

Один возможных вариантов реализации алгоритма при 16-разрядной адресации. Вспомогательные массив и переменные не используются:

.model small
.data
Array dw 1,2,3,4,5,6,7,8,9
Len equ ($ - Array) shr 1

.code
start:
mov ax,@data
mov ds,ax
;...
xor si,si
mov di,Len
mov cx,di
dec di
shl di,1
shr cx,1
DoLoop:
mov ax,Array[si]
xchg ax,Array[di]
mov Array[si],ax
add si,2
sub di,2
loop DoLoop
;...
mov ah,4Ch
int 21h
end start

Похожие вопросы
С++. Сравнения и перестановки
За счет чего алгоритмы быстрой сортировки дают выигрыш при выполнении операций сравнения и перестановки?
Снижают ли в ЕГЭ по информатике в С2 баллы за двойное прохождение по массиву? (неэффективный алгоритм)
Помогите составить алгоритм. Или киньте ссылку где можно срисовать. Двумерные массивы.
не могли бы вы обьяснить как работает программа для подсчёта суммы положительных элементов массива. Ассемблер TASM
Нужен алгоритм, который выводит кол-во положительных и кол-во отрицательных чисел в массиве
Ассемблер
составить и зафиксировать в форме блок схемы алгоритм определения максимального элемента в массиве
Pascal Как с помощью вектора иверсии найти номер перестановки, используя массивы и рекурсию?
Код и желательно алгоритм программы: Обработка простых двумерных массивов