Поиск минимального элемента массива - Assembler

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

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

Здравствуйте, мне нужна ваша помощь в ассемлере (TASM). Сам я в низкоуровневом программировании практически полный 0 Задача: найти минимальный элемент целочисленного массива. Логика решения: проверять по очереди все элементы массива, если найдется такой что array[i]<min, изменить значение min на array[i] Мой код а асе (собранный их разных источников на просторах инета):
model small
.stack  100h
.data
array db 0,5,7,8,21 
.code
mov si, offset array
mov cx, 5  ;записываем в регистр cx количество элементов в массиве
mov bx,7Fh ;????
@1: 
     lodsb 
     cmp al, bl ;сравниваем текущий элемент массива с bl
     jl min   ;если текущий меньше, переходим на метку min
     jmp @@1  ;переход на метку @@1
min: 
     mov bl, al ;запись текущего в bl
@@1:
    loop @1 ;если cx!=0 возвращаемся на метку @1
mov     ah,4ch ;процедура завершения программы
int 21h
end
Есть проблема: В TurboDebugger начинаю отслеживать "bl" и видно как она принимает значения, которых нет в массиве + по ходу выполнения программы она 2 раза переходит на метку min, хотя должна только 1 раз. Есть идеи в чем проблема?

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

textual
Листинг программы
mov bx,7Fh

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

  1. Переменная bx получает значение 7Fh (127)

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

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