Программа проверки чётности битов

В следующем примере программы мы выполним проверку каждого элемента массива на чётность или нечётность установленных битов в 1. Если число установленных битов чётное, то во втором массиве сохраним 1, в противном случае сохраним 0.

1; Автор: Довгополов Евгений Сергеевич
2
3src: db 2Ah, 71h, 9Ah, 1Eh, 0C9h, 56h, 0E7h, 38h, 0ADh, 0D2h
4dst: db 00h, 00h, 00h, 00h, 00h , 00h, 00h , 00h, 00h , 00h
5
6main:
7    lxi     h, src     ; Загружаем адрес переменной src в пару регистров HL
8    lxi     d, dst     ; Загружаем адрес переменной dst в пару регистров DE
9    mvi     c, 0Ah     ; Устанавливаем счётчик цикла C равным 10
10
11CheckLoop:
12    mov     a, m       ; Копируем значение в памяти на которую указывает пара регистров HL в A
13    rrc                ; Поворачиваем значение в регистре A на 1 вправо без учёта флага CY
14    jnc     Even       ; Если C=0, то переходим на метку Even
15
16    xra     a          ; Обнуляем регистр A
17    jmp     Store      ; Выполняем безусловный переход на метку Store
18
19Even:
20    mvi     a, 01h     ; Загружаем значение 1 в регистр A
21
22Store:
23    stax    d          ; Сохраняем значение в A по адресу в памяти на которую указывает DE
24
25    inx     h          ; Увеличиваем значение пары регистров HL на 1
26    inx     d          ; Увеличиваем значение пары регистров DE на 1
27    dcr     c          ; Уменьшаем значение регистра-счётчика C на 1
28    jnz     CheckLoop  ; Выполняем переход на метку CheckLoop пока C не будет равен 0
29
30    hlt                ; Останавливаем выполнение программы
Made on
Tilda