Программа сортировки массива

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

1; Автор: Довгополов Евгений Сергеевич
2
3array: db 05h, 03h, 08h, 01h, 09h, 02h, 07h, 04h, 06h, 0Ah
4
5main:
6    mvi     b, 09h     ; Устанавливаем счётчик внешнего цикла B равным 9
7
8OuterLoop:
9    lxi     h, array   ; Загружаем адрес переменной array в пару регистров HL
10    mvi     c, 09h     ; Устанавливаем счётчик внутреннего цикла C равным 9
11
12InnerLoop:
13    mov     a, m       ; Копируем значение в памяти на которую указывает пара регистров HL в A
14    inx     h          ; Увеличиваем значение пары регистров HL на 1
15    cmp     m          ; Выполняем сравнение значения в регистре A со значением в ячейке памяти
16    jc      NoSwap     ; Если C=1, то переходим на метку NoSwap
17    jz      NoSwap     ; Если Z=1, то переходим на метку NoSwap
18
19    mov     d, m       ; Копируем значение в памяти на которую указывает пара регистров HL в D
20    mov     m, a       ; Копируем значение в памяти на которую указывает пара регистров HL в A
21    dcx     h          ; Уменьшаем значение пары регистров HL на 1
22    mov     m, d       ; Копируем значение в памяти на которую указывает пара регистров HL в D
23    inx     h          ; Увеличиваем значение пары регистров HL на 1
24
25NoSwap:
26    dcr     c          ; Уменьшаем значение регистра-счётчика C на 1
27    jnz     InnerLoop  ; Выполняем переход на метку InnerLoop пока C не будет равен 0
28
29    dcr     b          ; Уменьшаем значение регистра-счётчика B на 1
30    jnz     OuterLoop  ; Выполняем переход на метку OuterLoop пока B не будет равен 0
31
32    hlt                ; Останавливаем выполнение программы
Made on
Tilda