8086 program to check whether a string is palindrome or not
Problem: Write an 8086 program to check whether a given string is palindrome or not.
Examples:
Input String: "abba"
Output: String is palindrome
Input String: "abbca"
Output: String is not palindrome
Explanation:
- Create a string
- Traverse to the end of the string
- Get the address of the end of the string, DI
- Load the starting address of the string, SI
- Compare the value stored at the address
- Increment the pointer, SI
- Decrements the pointer, DI
- Compare again the value stored at si and di
- Repeat the steps until SI<=DI
- If all the characters match print string is palindrome else print not palindrome
Program:
CPP
.MODEL SMALL
.STACK 100H
.DATA
; The string to be printed
STRING DB 'abba' , '$'
STRING1 DB 'String is palindrome' , '$'
STRING2 DB 'String is not palindrome' , '$'
.CODE
MAIN PROC FAR
MOV AX, @DATA
MOV DS, AX
; check if the string is;
;palindrome or not
CALL Palindrome
;interrupt to exit
MOV AH, 4CH
INT 21H
MAIN ENDP
Palindrome PROC
; load the starting address
; of the string
MOV SI,OFFSET STRING
; traverse to the end of;
;the string
LOOP1 :
MOV AX, [SI]
CMP AL, '$'
JE LABEL1
INC SI
JMP LOOP1
;load the starting address;
;of the string
LABEL1 :
MOV DI,OFFSET STRING
DEC SI
; check if the string is palindrome;
;or not
LOOP2 :
CMP SI, DI
JL OUTPUT1
MOV AX,[SI]
MOV BX, [DI]
CMP AL, BL
JNE OUTPUT2
DEC SI
INC DI
JMP LOOP2
OUTPUT1:
;load address of the string
LEA DX,STRING1
; output the string;
;loaded in dx
MOV AH, 09H
INT 21H
RET
OUTPUT2:
;load address of the string
LEA DX,STRING2
; output the string
; loaded in dx
MOV AH,09H
INT 21H
RET
Palindrome ENDP
END MAIN
|
Output:
String is palindrome
Note:
The program cannot be run on an online editor, please use MASM to run the program and use dos box to run MASM, you might use any 8086 emulator to run the program.
Last Updated :
03 Aug, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...