Запуталась с флагом четности, и не могу найти ошибку - Assembler

Узнай цену своей работы

Формулировка задачи:

Добрый день, не могу найти ошибку в программе, почему то в CL записывается число 5. Он берет данные из 6 ячейки памяти, а как его заставить рассматривать и проверять именно содержимое ячейки? Задание: Занести в область памяти ds:0008Н - ds:0027Н последовательность констант 0Н - 19Н и найти среди них третье по счету четное число, записать это число в регистр СL. Вот код программы
Листинг программы
  1. code segment
  2. assume cs:code, ds:code
  3. start:
  4. mov al,0h
  5. mov si,0007h
  6. m1:
  7. inc si ;следующее число
  8. mov ds:[si],al ;запись в память
  9. inc al ;следующее число
  10. cmp si,0027h ;проверка на равность 27
  11. je m2 ;переход в m2 если равно
  12. jmp m1 ;если не равно возвращаемся в m1
  13. m2:
  14. mov si,0007h
  15. m3:
  16. inc si
  17. mov al,ds:[si]
  18. jp m4 ;переход, если установлен флаг четности P=1
  19. jnp m3 ;переход, если установлен флаг четности P=0
  20. m4:
  21. inc dl ;счетчик четных чисел
  22. cmp dl,3 ;проверка на равность 3
  23. je m5 ;переход в m5 если равно
  24. jmp m3 ;если не равно возвращаемся в цикл
  25. m5:
  26. mov cl,al
  27. code ends
  28. end start

Решение задачи: «Запуталась с флагом четности, и не могу найти ошибку»

textual
Листинг программы
  1.  test  al,1            ; проверка на чётность

Объяснение кода листинга программы

  1. test - команда для проверки на чётность
  2. al,1 - это значение, которое должно быть четным

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы