
НАЧАЛО


СЧЕТЧИК=02Н


АККУМУЛЯТОР=
=1-ый справа байт кода


Маскирование последних
3 бит АККУМУЛЯТОРА



АККУМУЛЯТОР= 010В
НЕТ

Сдвиг кода на разряд вправо


СЧЕТЧИК=СЧЕТЧИК+1

СЧЕТЧИК=32


Запись значения счетчика в память


СЧЕТЧИК=02Н


АККУМУЛЯТОР=
=1-ый слева байт кода


Маскирование первых
3 бит АККУМУЛЯТОРА


ДА
АККУМУЛЯТОР= 01000000В


2 3
1
1 2 3


Сдвиг кода на разряд влево


СЧЕТЧИК=СЧЕТЧИК-1

НЕТ
СЧЕТЧИК=1


Запись значения счетчика в память


КОНЕЦ
Для нормального функционирования программы необходимо предварительно занести входной код, предварительно поделенный на байты в следующие ячейки памяти: 0800Н - 0803Н (в 0800Н - крайний левый байт кода и т.д.) и 0804Н - 0807Н (в 0804Н - крайний левый байт кода и т.д.)
| Адрес | Код | Метка | Команда | Комментарий |
| 0809 | 16 | MVI D,O2H | Счетчик = 2 | |
| 080A | 02 | |||
| 080B | 3A | M1 | LDA 0803H | Загрузка первого справа байта кода в аккумулятор |
| 080C | 03 | |||
| 080D | 08 | |||
| 080F | E6 | ANI 07H | Маскирование 3 последних бит аккумулятора | |
| 0810 | 07 | |||
| 0811 | FE | CPI 02H | Сравнение аккумулятора с 010В | |
| 0812 | 02 | |||
| 0813 | CA | JZ M2 | ||
| 0814 | 37 | |||
| 0815 | 08 | |||
| 0816 | A7 | ANA A | Обнуление флага переноса | |
| 0817 | 3A | LDA 0800H | ||
| 0818 | 00 | |||
| 0819 | 08 | |||
| 081A | 1F | RAR | ||
| 081B | 32 | STA 0800H | ||
| 081C | 00 | |||
| 081D | 08 | |||
| 081E | 3A | LDA 0801H | ||
| 0820 | 01 | |||
| 0821 | 08 | |||
| 0822 | 1F | RAR | ||
| 0823 | 32 | STA 0801H | ||
| 0824 | 01 | |||
| 0825 | 08 | |||
| 0826 | 3A | LDA 0802H | ||
| 0827 | 02 | |||
| 0829 | 08 | Последовательный сдвиг | ||
| 082A | 1F | RAR | байтов кода вправо | |
| 082B | 32 | STA 0802H | ||
| 082C | 02 | |||
| 082D | 08 | |||
| 082E | 3A | LDA 0803H | ||
| 082F | 03 | |||
| 0830 | 08 | |||
| 0831 | 1F | RAR | ||
| 0832 | 32 | STA 0803H | ||
| 0833 | 03 | |||
| 0834 | 08 | |||
| 0835 | 14 | INR D | Прибавление к счетчику единицы | |
| 0836 | 7A | MOV A, D | ||
| 0837 | FE | CPI 20H | Сравнение значения счетчика с 32D | |
| 0838 | 20 | |||
| 083A | 7A | M2 | MOV A, D | |
| 083B | 32 | STA 0808H | Запись первого результата в память | |
| 083C | 08 | |||
| 083D | 08 | |||
| 083E | 16 | MVI D,1FH | Счетчик = 31 | |
| 083F | 1F | |||
| 0840 | 3A | M3 | LDA 0803H | Загрузка первого слева байта кода в аккумулятор |
| 0841 | 03 | |||
| 0842 | 08 | |||
| 0843 | E6 | ANI E0H | Маскирование 3 первых разрядов кода | |
| 0844 | E0 | |||
| 0845 | FE | CPI 40H | Сравнение аккумулятора с 0100 0000В | |
| 0846 | 40 | |||
| 0847 | CA | JZ M4 | ||
| 0848 | 6B | |||
| 0849 | 08 | |||
| 084A | A7 | ANA A | Обнуление флага переноса | |
| 084B | 3A | LDA 0804H | ||
| 084C | 04 | |||
| 084D | 08 | |||
| 084E | 1F | RAL | ||
| 084F | 32 | STA 0804H | ||
| 0850 | 04 | |||
| 0851 | 08 | |||
| 0852 | 3A | LDA 0805H | ||
| 0853 | 05 | |||
| 0854 | 08 | |||
| 0855 | 17 | RAL | ||
| 0856 | 32 | STA 0805H | ||
| 0857 | 05 | |||
| 0858 | 08 | |||
| 0859 | 3A | LDA 0806H | ||
| 085A | 02 | |||
| 085B | 08 | Последовательный сдвиг | ||
| 085C | 17 | RAL | байтов кода влево | |
| 085D | 32 | STA 0806H | ||
| 085E | 06 | |||
| 085F | 08 | |||
| 0860 | 3A | LDA 0807H | ||
| 0861 | 07 | |||
| 0862 | 08 | |||
| 0863 | 17 | RAL | ||
| 0864 | 32 | STA 0807H | ||
| 0865 | 07 | |||
| 0866 | 08 | |||
| 0867 | 15 | DCR D | Вычитание из счетчика единицы | |
| 0868 | 7A | MOV A, D | ||
| 0869 | FE | CPI 02H | Сравнение значения счетчика с 1D | |
| 086A | 02 | |||
| 086B | 7A | M4 | MOV A, D | |
| 086C | 32 | STA 0809H | Запись второго результата в память | |
| 086D | 08 | |||
| 086E | 09 | |||
| 086F | 76 | HLT | Останов программы |






