CDSEG SEGMENT
ASSUME CS:CDSEG, DS:DTSEG


MOV AX, DTSEG
MOV DS, AX


;'input the first string' 출력
MOV AH, 09H
MOV DX, OFFSET MESS1
INT 21H

MOV SI, OFFSET BUFFER1
MOV CX, 256


L1 :
;문자열 입력
MOV AH, 01H
INT 21H


;엔터 입력 체크
CMP AL, 0DH
JE LINE1


MOV [SI], AL
INC SI
LOOP L1

LINE1 :


;'input the second string' 출력
MOV AH, 09H
MOV DX, OFFSET MESS2
INT 21H

MOV SI, OFFSET BUFFER2
MOV DX, 256


L2 :
;문자열 입력
MOV AH, 01H
INT 21H


;엔터 입력 체크
CMP AL, 0DH
JE LINE2
MOV [SI], AL
INC SI
LOOP L2


LINE2 :

;문자열 비교
CALL STRCMP

;프로그램 종료
MOV AH, 4CH
INT 21H


STRCMP PROC
MOV SI, [BUFFER1]
MOV DI, [BUFFER2]


REPEAT :
MOV AH, BYTE PTR [SI]
MOV BH, BYTE PTR [DI]


CMP AH, BH

JE EQUAL


MOV AH, 09H
MOV DX, OFFSET MESS3
INT 21H
JMP END
;=============================
EQUAL :
INC SI
INC DI


MOV AH, BYTE PTR [SI]
MOV BH, BYTE PTR [DI]


CMP AH, 0
JE CP1

CMP BH, 0
JE CP2
;==============================
CP1:
CMP BH, 0         ;AH가 0 일 때 넘어와서 BH도 0이면 SAME으로 넘아가서 same string이 나와야는데
JE SAME             왜 안넘어가는지?

MOV AH, 09H
MOV DX, OFFSET MESS3
INT 21H
JMP END


CP2:
MOV AH, 09H
MOV DX, OFFSET MESS3
INT 21H
JMP END
;==============================
CMP AH, BH
JE EQUAL


SAME :
MOV AH, 09H
MOV DX, OFFSET MESS4
INT 21H
JMP END

END :
RET
STRCMP ENDP

CDSEG ENDS


DTSEG SEGMENT
MESS1 DB 'input the first string : $'
MESS2 DB 'input the second string : $'
MESS3 DB 'two strings are different$'
MESS4 DB 'two strings are the same$'
BUFFER1 DB 256 DUP(0)
BUFFER2 DB 256 DUP(0)
DTSEG ENDS
END