ХАНДЫФАР

В следующем примере программы мы выполним поиск элемента в массиве. Программа вернёт в аккумуляторе индекс найденного элемента. Если элемент не будет найден, то в аккумуляторе вернёт значение -1.

  1. ; Автор: Довгополов Евгений Сергеевич
  2. array:_db 01h, 02h, 03h, 04h, 05h, 06h, __________07h, 08h, 09h, 0Ah, 0Bh, 0Ch, __________0Dh, 0Eh, 0Fh, 10h, 11h, 12h, __________13h, 14h
  3. main:
  4. ____mvi ____c, 14h
  5. ____mvi ____d, 00h
  6. ____lxi ____h, array
  7. FindLoop:
  8. ____mov ____a, m
  9. ____cpi ____04h
  10. ____jz _____Found
  11. ____inx ____h
  12. ____inr ____d
  13. ____dcr ____c
  14. ____jnz ____FindLoop
  15. ____mvi ____a, 0FFh
  16. ____hlt
  17. Found:
  18. ____mov ____a, d
  19. ____hlt
В следующем примере программы мы выполним поиск элемента в массиве. Программа вернёт в аккумуляторе индекс найденного элемента. Если элемент не будет найден, то в аккумуляторе вернёт значение -1.

  1. ; Автор: Довгополов Евгений Сергеевич
  2. array:_db 01h, 02h, 03h, 04h, 05h, 06h, 07h, 08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 0Fh, 10h, 11h, 12h, 13h, 14h
  3. main:
  4. ____mvi ____c, 14h____; Устанавливаем счётчик цикла C равным 20.
  5. ____mvi ____d, 00h____; Индекс найденного элемента.
  6. ____lxi ____h, array__; Загружаем адрес переменной array в пару регистров HL.
  7. FindLoop:
  8. ____mov ____a, m______; Копируем значение в памяти на которую указывает пара регистров HL в A.
  9. ____cpi ____04h_______; Выполняем сравнение значения в регистре A с непосредственным значением 04h.
  10. ____jz _____Found_____; Если Z=1, то переходим на метку Found.
  11. ____inx ____h_________; Увеличиваем значение пары регистров HL на 1.
  12. ____inr ____d_________; Увеличиваем значение в регистре-индексе D на 1.
  13. ____dcr ____c_________; Уменьшаем значение в регистра-счётчика C на 1.
  14. ____jnz ____FindLoop__; Выполняем переход на метку FindLoop пока регистр C не будет равен 0.
  15. ____mvi ____a, 0FFh___; Если элемент не был найден, то возвращаем в аккумуляторе значение -1.
  16. ____hlt_______________; Завершаем программу.
  17. Found:
  18. ____mov ____a, d______; Если элемент был найден, то возвращаем в аккумуляторе его индекс в массиве.
  19. ____hlt_______________; Завершаем программу.
Made on
Tilda