Добрый день, не могу найти ошибку в программе, почему то в 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 ;переход в m3 если равно
jmp m3 ;если не равно возвращаемся в цикл
m5:
mov cl,al
code ends
end start