Найти наибольший и наименьший элемент в заданном массиве - 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 ;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д