2008-12-12, 01:24 AM
|
#1
|
註冊會員
|
字串比較的問題
以下是我寫的輸入2字串 比較字串內容是否相等 是則輸出y 否則輸出n
但輸入1111和11是卻是想等 是哪裡出錯了呢
找書找了很久 還是不知錯在哪
STACKSEG SEGMENT STACK
BYTE 1024H DUP(?)
STACKSEG ENDS
DATASEG SEGMENT 'DATA'
STRING1 BYTE 10 DUP(?),'$'
STRING2 BYTE 10 DUP(?),'$'
RESULT1 BYTE 'Y','$'
RESULT2 BYTE 'N','$'
MSG1 BYTE 'PLEASE ENTER TWO STRING TO COMPARE : ','$'
MSG2 BYTE 'PASS (ENTER) TO CONTINUE , OR (ESC) TO EXIT..','$'
DATASEG ENDS
CODESEG SEGMENT 'CODE'
ASSUME CS:CODESEG, DS  ATASEG, SS:STACKSEG
BEGIN: MOV AX, DATASEG
MOV DS, AX
MOV ES, AX
AGAIN: CALL WELLCOME
CALL CRLF
CALL TYPE1
CALL CRLF
CALL TYPE2
CALL CRLF
CALL COMPARE
CALL CRLF
CALL CHECK
CALL CRLF
JMP AGAIN
TYPE1 PROC NEAR
MOV CX, 0
MOV SI, 0
STR1:
MOV AH, 01H
INT 21H
CMP AL, 0DH
JE EXIT
MOV STRING1[SI], AL
CMP CX, 9
JE EXIT
INC CX
JMP STR1
EXIT:
RET
TYPE1 ENDP
TYPE2 PROC NEAR
MOV CX, 0
MOV SI, 0
STR2:
MOV AH, 01H
INT 21H
CMP AL, 0DH
JE EXIT
MOV STRING2[SI], AL
CMP CX, 9
JE EXIT
INC CX
JMP STR2
EXIT:
RET
TYPE2 ENDP
COMPARE PROC NEAR
LEA SI, STRING1
LEA DI, STRING2
CLD
MOV CX,9
REPZ CMPSB
JNE AA
MOV DX, OFFSET RESULT1
JMP BB
AA:MOV DX, OFFSET RESULT2
BB:MOV AH, 09H
INT 21H
RET
COMPARE ENDP
CRLF PROC NEAR
MOV DL, 0DH
MOV AH, 2
INT 21H
MOV DL, 0AH
MOV AH, 2
INT 21H
RET
CRLF ENDP
WELLCOME PROC NEAR
MOV DX, OFFSET MSG1
MOV AH, 09H
INT 21H
RET
WELLCOME ENDP
CHECK PROC NEAR
MOV DX, OFFSET MSG2
MOV AH, 09H
INT 21H
READ: MOV AH, 07H
INT 21H
CMP AL, 1BH
JE ENDING
CMP AL, 0DH
JE EXIT
LOOP READ
ENDING: MOV AH, 4CH
INT 21H
EXIT:
RET
CHECK ENDP
CODESEG ENDS
END BEGIN
|
|
|
送花文章: 0,
收花文章: 0 篇, 收花: 0 次
|