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