Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить на ассемблере

Влад Иванов Ученик (92), открыт 1 неделю назад
Задан массив однозначных чисел. Поменять местами первое и последнее, второе и предпоследнее и т.д.
16-разрядный микропроцессор I8086
1 ответ
Артём . Профи (808) 1 неделю назад
.model small
.stack 100h

.data
array db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; Пример массива

.code
main:
mov ax, @data
mov ds, ax

mov si, 0 ; Указатель на начало массива
mov di, 10 ; Указатель на конец массива (10 элементов)

swap_loop:
mov al, array[si] ; Загружаем первый элемент массива в AL
mov ah, array[di] ; Загружаем последний элемент массива в AH
mov array[si], ah ; Перемещаем последний элемент на место первого
mov array[di], al ; Перемещаем первый элемент на место последнего

inc si ; Увеличиваем указатель на начало массива
dec di ; Уменьшаем указатель на конец массива

cmp si, di ; Проверяем, достигли ли мы середины массива
jae end_swap ; Если да, завершаем процесс

jmp swap_loop ; Продолжаем обмен

end_swap:
; В этой точке массив уже отсортирован
; Можно выполнить дальнейшие действия, если нужно

mov ax, 4c00h ; Выход из
программы
int 21h

end main
Похожие вопросы