Программа поиска минимального элемента

В следующем примере программы мы выполним поиск самого маленького элемента в массиве и сохраним результат в переменной.

1; Автор: Довгополов Евгений Сергеевич
2
3array:  db 23h, 15h, 37h, 42h, 51h, 68h, 74h, 89h, 92h, 10h
4result: db 00h
5
6main:
7    lxi     h, array          ; Загружаем адрес переменной array в пару регистров HL
8    mvi     c, 09h            ; Устанавливаем счётчик цикла C равным 9
9
10    mov     a, m              ; Предположим что первый элемент массива является наименьшим элементом
11    mov     b, a              ; Копируем значение регистра A в регистр B
12
13FindSmallestLoop:
14    inx     h                 ; Увеличиваем значение пары регистров HL на 1
15    mov     a, m              ; Копируем значение в памяти на которую указывает пара регистров HL в A
16    cmp     b                 ; Выполняем сравнение значения в регистре A со значением в регистре B
17    jc      UpdateSmallest    ; Если C=1, то переходим на метку UpdateSmallest
18
19    jmp     ContinueLoop      ; Выполняем безусловный переход на метку ContinueLoop
20
21UpdateSmallest:
22    mov     b, a              ; Копируем A в B. Обновляем наименьший элемент массива
23
24ContinueLoop:
25    dcr     c                 ; Уменьшаем значение регистра-счётчика C на 1
26    jnz     FindSmallestLoop  ; Выполняем переход на метку FindSmallestLoop пока C не будет равен 0
27
28    mov     a, b              ; Копируем значение регистра B в регистр A
29    sta     result            ; Сохраняем значение регистра A в памяти (result)
30
31    hlt                       ; Останавливаем выполнение программы
Made on
Tilda