Поиск минимального элемента массива - Assembler
Формулировка задачи:
Здравствуйте, мне нужна ваша помощь в ассемлере (TASM). Сам я в низкоуровневом программировании практически полный 0
Задача: найти минимальный элемент целочисленного массива.
Логика решения: проверять по очереди все элементы массива, если найдется такой что array[i]<min, изменить значение min на array[i]
Мой код а асе (собранный их разных источников на просторах инета):
Есть проблема: В TurboDebugger начинаю отслеживать "bl" и видно как она принимает значения, которых нет в массиве + по ходу выполнения программы она 2 раза переходит на метку min, хотя должна только 1 раз. Есть идеи в чем проблема?
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Решение задачи: «Поиск минимального элемента массива»
textual
Листинг программы
mov bx,7Fh
Объяснение кода листинга программы
- Переменная
bxполучает значение 7Fh (127)