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