|
|
.MODEL SMALL
.STACK 64
DATA SEGMENT
MSG DB 'ENTER STRING TO BE CHECKED FOR PALINDROME > $'
MSG1 DB 'YES ,A PALINDROME $'
MSG2 DB 'NOT A PALINDROME $'
STRING LABEL BYTE
MAXLEN DB 20
STRLEN DB ?
STRFLD DB 20 DUP(' ')
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
CALL CLS ;clear screen
CALL CURSOR ;set cursor at (0,0)
CALL READ
CALL CLS
CALL CURSOR
LEA BX,STRFLD
MOV CH,00H
MOV CL,STRLEN
CMP CX,02H
JC PAL
MOV DX,BX
ADD DX,CX
DEC DX
SHR CX,1
AGAIN: MOV AL,[BX]
XCHG BX,DX
CMP AL,[BX]
JNE NOTPAL
XCHG BX,DX
INC BX
DEC DX
LOOP AGAIN
PAL: MOV AH,09H
LEA DX,MSG1
INT 21H
JMP HALT
NOTPAL: MOV AH,09H
LEA DX,MSG2
INT 21H
HALT: MOV AX,4C00H ;terminate program
INT 21H
;CLEARS SCREEN
CLS: MOV AX,0600H
MOV BH,07H
MOV CX,0000H
MOV DX,184FH
INT 10H
RET
;SET CURSOR
CURSOR: MOV DX,0000H
MOV AH,02H
MOV BH,00H
INT 10H
RET
READ: MOV AH,09H ;display message
LEA DX,MSG
INT 21H
MOV AH,0AH
LEA DX,STRING
INT 21H
RET
WRITE: MOV AH,09H
LEA DX,STRFLD
INT 21H
RET
CODE ENDS
END START
|
|
|