Запуталась с флагом четности, и не могу найти ошибку - 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 ; проверка на чётность
Объяснение кода листинга программы
test
- команда для проверки на чётностьal,1
- это значение, которое должно быть четным
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д