Программа на 32-битном ассемблере MASM, саму программу сделала, не получается вывести результат - Assembler

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

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

В общем,нужно проверить массив на симметричность,и вывести строку "симметричен" или "нет" Сама программа работает,результат лежит в регистре SI. Если SI=1 то симметричен и 0 иначе.Нужно вывести соответственно "симметричен" при SI=1 и "нет" в ином случае.Проблема в том,что если массив симметричен ,программа выводит обе строки.Во вложении результат вывода если массив симметричен Вот текст программы:
include console.inc  
.data 
N EQU 10
X DD N DUP(?)
yes DB 'YES'
no DB 'NO'
.code 
start:
 
 MOV ECX,N
 MOV EBX,0
 INPUT: ININT X[EBX]
        ADD EBX,type X
        LOOP INPUT
mov SI,1
mov EBX,0
mov EDX,(type X*N)-type X
mov ECX,N/2
 
CHECK: mov EAX,X[EBX]   
        cmp EAX,X[EDX]       ;сравниваем x[i] и x[N-1-i]
        je NEXT   
            mov SI,0               ;как только не равно идем в конец программы
NEXT:  add EBX,type X             
       sub EDX,type X
       cmp SI,0
       LOOPNE CHECK
       
cmp SI,0
je NNN
mov EBX,offset yes
outstr EBX
jmp FIN
 
NNN:outint 0
mov EBX,offset no
outstr EBX
 
FIN:
 
exit
end start

Решение задачи: «Программа на 32-битном ассемблере MASM, саму программу сделала, не получается вывести результат»

textual
Листинг программы
yes DB 'YES',0
no DB 'NO',0

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


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

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

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