DATA SEGMENT
str1 db 20 dup(?) ; Original String
str2 db 20 dup(?) ; Reversed String
n db ?
msg1 db 10, 13, "String is palindrome",10, 13,"$"
msg2 db 10, 13, "String is Not palindrome",10, 13,"$"
msg3 db 10, 13, "enter the string", 10, 13, "$"
NL db 10, 13 , '$'
DATA ENDS
code segment
assume cs:code, ds:data
start:
MOV AX, data
MOV DS, AX
LEA SI, str1
LEA DI, str2
MOV CL, 00H
LEA DX, msg3
MOV AH, 09H ; DISPLAY MSG3
INT 21H
UP: MOV AH, 01H ; to read string until enter key is pressed
INT 21H
CMP AL, 0dh ; for enter key
JZ L2
MOV [SI], AL
INC SI
INC CL
JMP UP
L2: MOV n, CL
MOV CL, 00H
DEC SI ; BRING SI TO POINT TO LAST CHAR OF STR1
UP1: CMP CL, n
JZ CHECK
MOV AL, [SI]
MOV [DI], AL ; REVERSE
DEC SI
INC CL
INC DI
JMP UP1
CHECK:
LEA SI, str1
LEA DI, str2
MOV CL, 00H
UP2: CMP CL, n
JZ PAL
MOV AL, [SI]
CMP AL, [DI]
JNZ NOTPAL
INC SI
INC DI
INC CL
JMP UP2
NOTPAL: LEA DX, msg2 ; Display Not Palindrome
MOV AH, 09H
INT 21H
JMP EXIT
PAL: LEA DX, msg1 ; Display Palindrome
MOV AH, 09H
INT 21H
EXIT: MOV AH,4CH
INT 21H
code ENDS
END start
OUTPUT
enter the string madam String is palindrome
ليست هناك تعليقات:
إرسال تعليق