Поиск максимального четного и нечетного элемента в массиве - Assembler
Формулировка задачи:
Помогите, нужно Обменять в массиве максимальный четный элемент с максимальным нечетным . работаю в масм.
Решение задачи: «Поиск максимального четного и нечетного элемента в массиве»
textual
Листинг программы
.model small
.386
.data
db 'Begin Of Data',0
arr db 1,2,-3,-4,5,7,6,-8,9,0
max db ?
db 'End Of Data',0
.stack
db 256 dup ('?')
.code
start:
mov ax,@data
mov ds,ax
xor si,si
xor di,di
mov al,arr[si]
mov cx,0Ah
shr cx,1
dec cx
push cx
find_max1:
add si,2
cmp al,arr[si]
jg skip1
mov al,arr[si]
mov di,si
skip1:
loop find_max1
mov max,al
mov bx,di
mov si,1
mov di,1
mov al,arr[si]
pop cx
find_max2:
add si,2
cmp al,arr[si]
jg skip2
mov al,arr[si]
mov di,si
skip2:
loop find_max2
mov arr[bx],al
mov al,max
mov arr[di],al
mov ah,4Ch
int 21h
end start
Объяснение кода листинга программы
В коде на языке Assembler происходит следующее:
- Устанавливаются сегменты данных и стека.
- Инициализируются счётчики для обхода массива.
- Начинается поиск максимального элемента в массиве. Находится первое максимальное значение и сохраняется в переменной
max. - Перемещается указатель на начало массива.
- Начинается поиск минимального элемента в массиве. Находится первое минимальное значение и сохраняется в переменной
max. - Запускается цикл по массиву, в котором находятся максимальные и минимальные значения.
- Выводится сообщение об успешном выполнении программы.