Пересылка массива информации из одной области памяти в другую

Адрес Машинный код Метка Мнемокод Комментарий
      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 окончание программы

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: