Поиск максимального четного и нечетного элемента в массиве - 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
. - Запускается цикл по массиву, в котором находятся максимальные и минимальные значения.
- Выводится сообщение об успешном выполнении программы.