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