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