Найти ошибку в программе (поиск минимального элемента) - Assembler
Формулировка задачи:
Ребят, долго не могу найти ошибку в коде. Уверен, что нужно исправить 1-2 символа и программа будет работать.
Задача такая: Найти минимальный элемент из массива
. Сейчас программа выводит "0", а должна "4". Мой код:data segment a db 9,8,7,6,5,4 b db 1 dup(?) data ends code segment assume ds:data,cs:code begin: mov ax,data mov ds,ax mov si,0 mov cx,6 mov ah,0 m1:mov al,a[si] cmp al,ah ja m2 mov ah,al m2: inc si loop m1 mov al,ah mov ah,2h mov dl,al add dl,30h int 21h mov ah,4ch int 21h code ends end begin
Решение задачи: «Найти ошибку в программе (поиск минимального элемента)»
textual
Листинг программы
data segment a db 9,8,7,6,5,4 b db 1 dup(?) data ends code segment assume ds:data,cs:code begin: mov ax,data mov ds,ax mov si,0 mov cx,6 mov dl,a m1: cmp a[si],dl ja m2 mov dl,a[si] m2: inc si loop m1 mov ah,2h add dl,30h int 21h mov ah,0 int 16h mov ah,4ch int 21h
Объяснение кода листинга программы
Список с пояснениями:
- Переменная
a
содержит список чисел на языке ассемблера. - Переменная
b
используется для хранения результата. - Цикл
m1
проходит по всем элементам спискаa
. - Цикл
m2
запускается, если текущий элемент спискаa
большеdl
(переменная, которая ищет минимальное значение). - Если
m2
завершился, значит, мы нашли минимальное значение и сохраняем его вdl
. - Увеличиваем счётчик
si
на единицу, чтобы перейти к следующему элементу списка. - Цикл
m1
продолжается, пока не будет пройден весь список. - Выводим результат на экран с помощью функции
int 21h
. - Завершаем работу программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д