Open In App

8086 program to check whether a string is palindrome or not

Improve
Improve
Like Article
Like
Save
Share
Report

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: 
 

  1. Create a string
  2. Traverse to the end of the string
  3. Get the address of the end of the string, DI
  4. Load the starting address of the string, SI
  5. Compare the value stored at the address
  6. Increment the pointer, SI
  7. Decrements the pointer, DI
  8. Compare again the value stored at si and di
  9. Repeat the steps until SI<=DI
  10. 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
Previous
Next
Share your thoughts in the comments
Similar Reads