Найти наибольший и наименьший элемент в заданном массиве - Assembler

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

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

Помогите с работой. Лабораторная №1. Найти наибольший и наименьший элемент в заданном массиве. И если можно, комментарии к каждой строке.

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

textual
Листинг программы
ORG 100h
JMP start
 
matrix  DB  55,25,40,21,92,09,76,81
        DB  90,30,24,07,08,03,86,77
        DB  33,62,48,06,61,36,04,11
mSize   =   $ - matrix     ; длина массива
 
maxi    DB  'MAX...: $'
mini    DB  13,10,'MIN...: $'
 
start:
   MOV   AH,9          ; мессага: == МАХ ==
   MOV   DX,maxi       ;
   INT   21h           ;
   MOV   AH,1          ; первый раз будем сравнивать с мин+1
   MOV   SI,matrix     ; адрес массива
   MOV   CX,mSize      ; его длина
@@:                    ;
   LODSB               ; читаем байт из SI
   CMP   AL,AH         ; сравниваем его с АН
   JNA   min           ; если не больше - пропускаем
   SHL   AX,8          ; иначе: сохраняем его в AH
min:                   ;
   LOOP  @b            ; ..и так со-всеми элементами массива
   XCHG  AH,AL         ; отправляем результат в AL
   CALL  BYTE2ASC      ; выводим его на экран!
 
   MOV   AH,9          ; мессага: == МIN ==
   MOV   DX,mini       ;
   INT   21h           ;
   MOV   AH,0FEh       ; первый раз будем сравнивать с макс-1
   MOV   SI,matrix     ;
   MOV   CX,mSize      ;
@@:                    ;
   LODSB               ;
   CMP   AL,AH         ;
   JNB   max           ; если не меньше - пропускаем
   SHL   AX,8          ; иначе: сохраняем его в AH
max:                   ;
   LOOP  @b            ;
   XCHG  AH,AL         ; отправляем результат в AL
   CALL  BYTE2ASC      ; выводим на экран мин.элемент
 
exit:                  ;
   XOR   AX,AX         ; выход по любой клавише
   INT   16h           ;
   INT   20h           ;
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BYTE2ASC:              ; фукнция выводит байт с AL, в 10-тичном виде
   AAM                 ; BCD-коррекция
   OR    AX,3030h      ; переводим цифры в символы
   XCHG  AH,AL         ; AL = мажор, AH = минор
   INT   29h           ; выводим на экран AL
   SHR   AX,8          ; сдвигаем AH в AL
   INT   29h           ; и выводим минорную часть
RET                    ;

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


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

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

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