Я мало знаю язык ассемблера, но я попытался сделать этот палиндром, и это довольно сложно. Сначала я должен ввести строку, затем показать ее исходную и обратную строку, а затем показать, есть ли ее палиндром или нет.как проверить сравнение, если палиндром или нет?
Я уже выяснил, как показать обратную строку, нажав и нажав ее через цикл из того, что я прочитал на другом форуме, и понял, что это , теперь единственной проблемой для меня является сравнение обратной строки и исходной строки проверить его палиндром или нет.
call clearscreen
mov dh, 0
mov dl, 0
call cursor
mov ah, 09h
mov dx, offset str1
int 21h
palin db 40 dup(?)
mov ah, 0ah
mov palin, 40
mov dx, offset palin
int 21h
mov dh, 1
mov dl, 0
call cursor
mov ah, 09h
mov dx, offset str2
int 21h
mov si, 2
forward:
mov al, palin + si
cmp al, 13
je palindrome
mov ah, 02h
mov dl, al
push ax 'push the letter to reverse
int 21h
inc si
jmp forward
palindrome:
mov dh, 2
mov dl, 0
call cursor
mov ah, 09h
mov dx, offset str3
int 21h
mov cx, 40 'pop each letter through a loop to show its reverse
reverse:
mov ah, 02h
pop ax
mov dl, al
int 21h
loop reverse
int 20h
clearscreen:
mov ax, 0600h
mov bh, 0Eh
mov cx, 0
mov dx, 8025
int 10h
ret
cursor:
mov ah, 02h
mov bh, 0
int 10h
ret
str1: db "Enter A String : $"
str2: db "Forward : $"
str3: db "Backward : $"
str4: db "Its a Palindrome! $"
str5: db "Not a Palindrome!$"
хорошо, что это то, что они преподавая нам здесь в школе 16-битный DOS. никогда не знал, что на этом языке появился новый стандарт. Похоже, что я устарел. плохо попробуйте сравнить первый и последний байты, затем попробуйте изменить образец кода, который вы мне дали. –
извините меня Gunner, что такое SI и DI ?? дайте мне пример, как это SI и DI работает. Я предполагаю, что так я сравниваю первый и последний байты, это правильно? –