Найти минимальный и максимальный элементы одномерного массива - Assembler

Узнай цену своей работы

Формулировка задачи:

Найти минимальный и максимальный элементы одномерного массива. Массив задать в сегменте данных или ввести с клавиатуры. Помогите плиззз. Желательно с небольшими коментариями.

Решение задачи: «Найти минимальный и максимальный элементы одномерного массива»

textual
Листинг программы
cseg segment
assume cs:cseg,ds:cseg,es:cseg,ss:cseg
org 100h
 
start:  mov di,offset array;адрес массива
    mov cx,l_arr    ;число элементов массива
    dec cx      ;число сравнений на 1 меньше
    push cx     ;сохраним его
    mov bx,[di] ;примем за минимум 1 элемент
    mov ax,bx   ;и за максимум тоже 
    add di,2    ;di -> 2 элемент
    push di
chkmin: cmp [di],bx ;след. элемент меньше минимального ?
    jge nomin   ;нет, проверяем дальше
    mov bx,[di] ;да, поместим его в bx
nomin:  add di,2    ;di -> след. элемент
    loop chkmin ;повторить cx раз
    pop di      ;di -> 2 элемент
    pop cx      ;восстановим счетчик
chkmax: cmp [di],ax ;след. элемент больше максимального ?
    jle nomax   ;нет, проверяем дальше
    mov ax,[di] ;да, отправим его в ax
nomax:  add di,2    ;di -> след. элемент
    loop chkmax ;повторить cx раз
    ret
 
array   dw 2456,321,-12,876,55,14,8,625,-324,156
l_arr=($-array)/2
 
cseg ends
end start

Объяснение кода листинга программы

Код на языке Assembler выполняет следующие действия:

  1. Подготовительные действия:
    • В сегментном регистре di хранится адрес первого элемента массива.
    • В регистре cx хранится общее количество элементов в массиве (используется для цикла).
    • В регистре bx хранится текущий минимум.
    • В регистре ax хранится текущий максимум.
  2. Цикл по всем элементам массива:
    • Начинается с адреса первого элемента массива (di).
    • Продолжается до тех пор, пока не будет выполнено условие цикла (cx > 0).
    • На каждой итерации выполняется сравнение текущего элемента с текущим минимумом и максимумом.
    • Если текущий элемент меньше текущего минимума, он становится новым минимумом.
    • Если текущий элемент больше текущего максимума, он становится новым максимумом.
    • После каждой итерации к di прибавляется 2, чтобы перейти к следующему элементу.
  3. После цикла:
    • В регистре di хранится адрес последнего элемента массива.
    • В регистре cx хранится 0 (цикл закончился).
    • В регистре bx хранится минимум.
    • В регистре ax хранится максимум.
  4. Возврат в вызывающую программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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