Адрес | Машинный код | Метка | Мнемокод | Комментарий |
MVI D | загрузка счетчика | |||
N | ||||
LXI Н | загрузка адресного указателя | |||
NN | исходного массива | |||
NN | ||||
LXI B | загрузка адресного указателя | |||
DD | результирующего массива | |||
DD | ||||
7E | M2 | MOV A,M | пересылка числа из памяти в АКМ | |
STAX B | пересылка числа из АКМ в память | |||
850А | DCR D | уменьшение счетчика на единицу | ||
850В | CA | JZ, M1 | пересылка массива закончена? | |
850С | ||||
850D | ||||
850Е | INX H | переход к следующему адресу в HL | ||
850F | INX B | переход к следующему адресу в BC | ||
C3 | JMP, M2 | организация цикла | ||
Ml | NOP | окончание программы |
Перед выполнением программы исходный массив чисел заносится в память, с помощью командных клавиш, начиная с адреса NNNN (см. Приложение 4).
В ряде случаев возникает необходимость выбрать из массива информации данные, представляющие собой ряд максимальных, либо минимальных величин. Предположим, что необходимо написать программу для решения следующей задачи. Дан массив А1, состоящий из N однобайтовых чисел. Необходимо переписать из массива А1 в массив В1 все числа в диапазоне от Н1 до Н2.
В программе выборки из массива чисел заданного интервала использованы следующие исходные данные и обозначения:
N - количество элементов исходного массива
L - счетчик, указатель длины исходного массива
ВС - адресный указатель исходного массива
NNNN - адрес ячейки памяти, где хранится первое число исходного массива.
DE - адресный указатель результирующего массива
DDDD - адрес ячейки памяти, куда будет записано первое число результирующего массива.
Н1 - нижний предел диапазона выборки
Н2 - верхний предел диапазона выборки
8100 - адрес начала программы
Перед выполнением программы исходный массив чисел А1 заносится в память с помощью командных клавиш, начиная с адреса NNNN (см. Приложение 5)
Таблица 2
Выборка из массива данных чисел заданного интервала
Адрес | Машинный код | Метка | Мнемокод | Комментарий |
2E | MVI L | загрузка счетчика | ||
N | ||||
LXI B | загрузка адресного указателя | |||
NN | исходного массива | |||
NN | ||||
LXI D | загрузка адресного указателя | |||
DD | результирующего массива | |||
DD | ||||
0A | M2 | LDAX B | выборка числа из массива А1 | |
FE | CPI | сравнение с нижним пределом - | ||
810А | H1 | числом H1 | ||
810В | DA | JC, M1 | переход на метку Ml, если | |
810С | число < Н1 | |||
810D | ||||
Таблица 2 (продолжение) | ||||
810Е | FE | CPI | сравнение с верхним пределом - | |
810F | Н2 | числом Н2 | ||
D2 | JNC, M1 | переход на метку Ml, если | ||
число > Н2 | ||||
STAX D | запись числа, попавшего в | |||
заданный интервал, в память | ||||
INX D | переход к следующему адресу в DE | |||
M1 | INX B | переход к следующему адресу в BC | ||
2D | DCR L | уменьшение счетчика | ||
C2 | JNZ, M2 | организация цикла | ||
811А | NOP | окончание программы |