Задача на Assembler в среде RadAsm! Дан массив a(n) типа WORD. Найти минимальный элемент.
Формулировка задачи:
Задача фигня , но с чего начать...не могу понять . Помогите или скажите с чего начать ... Дан массив a(n) типа WORD. Найти минимальный элемент .
Решение задачи: «Задача на Assembler в среде RadAsm! Дан массив a(n) типа WORD. Найти минимальный элемент.»
textual
Листинг программы
mov si, offset array ;
mov cx, array_len ;
mov bx,-2 ; bx = 0FFFEh (минимальное на данный момент)
@1: lodsw ;
cmp bx, ax ; сравнение MIN с элементом массива
jb okey ; OK - если ВХ меньше
xchg ax, bx ; иначе: меняем их местами
okey: loop @1 ; мотаем СХ-раз..
Объяснение кода листинга программы
- Входные данные:
- Массив
a(n)типаWORD. array_len- длина массива.bx- переменная, в которой будет храниться минимальный элемент на данный момент.cx- счётчик итераций цикла.si- смещение массива в памяти.
- Массив
- Описание работы алгоритма:
- Линейный поиск минимального элемента в массиве.
- Цикл выполняется
array_lenраз. - На каждой итерации:
- Сохранение текущего минимального элемента в регистре bx.
- Загрузка очередного элемента массива в регистр ax.
- Сравнение текущего элемента с минимальным.
- Если текущий элемент меньше, то меняем его и минимального местами.
- Если текущий элемент равен минимальному, то переходим к следующей итерации.
- После цикла возвращаемся в начало и повторяем цикл до тех пор, пока не найдём минимальный элемент.
- Выходные данные:
- Минимальный элемент массива
a(n).
- Минимальный элемент массива