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

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

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

Добрый день, не могу найти ошибку в программе, почему то в CL записывается число 5. Он берет данные из 6 ячейки памяти, а как его заставить рассматривать и проверять именно содержимое ячейки? Задание: Занести в область памяти ds:0008Н - ds:0027Н последовательность констант 0Н - 19Н и найти среди них третье по счету четное число, записать это число в регистр СL. Вот код программы
code segment 
assume cs:code, ds:code 
 
start:
mov al,0h
mov si,0007h
 
m1:
inc si               ;следующее число
mov ds:[si],al       ;запись в память
inc   al             ;следующее число
cmp si,0027h           ;проверка на равность 27
je   m2              ;переход в m2 если равно
jmp  m1              ;если не равно возвращаемся в m1
 
m2:
mov si,0007h
 
m3:
inc si
mov al,ds:[si]
jp    m4             ;переход, если установлен флаг четности P=1
jnp   m3             ;переход, если установлен флаг четности P=0
 
m4:
inc  dl             ;счетчик четных чисел
cmp dl,3             ;проверка на равность 3
je   m5              ;переход в m5 если равно
jmp  m3              ;если не равно возвращаемся в цикл
 
m5:
mov cl,al
 
code ends
end start

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

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

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

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

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


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

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

12   голосов , оценка 3.75 из 5
Похожие ответы