Поиск максимального четного и нечетного элемента в массиве - 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 происходит следующее:

  1. Устанавливаются сегменты данных и стека.
  2. Инициализируются счётчики для обхода массива.
  3. Начинается поиск максимального элемента в массиве. Находится первое максимальное значение и сохраняется в переменной max.
  4. Перемещается указатель на начало массива.
  5. Начинается поиск минимального элемента в массиве. Находится первое минимальное значение и сохраняется в переменной max.
  6. Запускается цикл по массиву, в котором находятся максимальные и минимальные значения.
  7. Выводится сообщение об успешном выполнении программы.

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы