Assembly Program To Check The Given String Is Palindrome Or Not

string macro msg

mov ah, 09h
mov dx, offset msg
int 21h

endm

data segment

cr equ 0dh
lf equ 0ah

buff db 80 dup(0)
revbuff db 80 dup(0)
strlen dw ?

msg1 db cr, lf, 'enter a string: $'
msg2 db cr, lf, cr, lf, 'Reverse of the string is: $'
msg3 db cr, lf, cr, lf, '*************String is a palindrome***********$'
msg4 db cr, lf, cr, lf, '*************String is not palindrome***********$'

data ends

code segment
assume cs:code, ds:data
start:
        mov ax, data
        mov ds, ax
        string msg1
        mov si, offset buff

label1:
        mov ah, 01h
        int 21h
        mov buff[si],al
        inc si
        cmp al, 0dh
        jne label1

        mov si, offset buff
        mov bx, 00

label3:
        mov al,[si]
        cmp al,0dh
        je label2
        inc si
        inc bx
        jmp label3
label2:
        mov strlen,bx
        mov si,offset buff
        add si,bx
        mov di,offset revbuff
        mov cx,bx
label4:
        dec si
        mov al,[si]
        mov [di],al
        inc di

        loop label4
        mov al,'$'
        mov [di],al
        
        string msg2
        string revbuff
        mov si,offset buff
        mov di,offset revbuff
        mov cx,strlen

nextchar:
        mov al,[si]
        cmp al,[di]
        jne notpali
        inc si
        inc di
        loop nextchar
palindrome:
        string msg3
        jmp skip
notpali:
        string msg4
skip:
        mov ah, 4ch
        mov al, 00h
        int 21h
code ends
end start

Leave a comment