查看單個文章
舊 2008-12-12, 01:24 AM   #1
erstauska
註冊會員
榮譽勳章

勳章總數0
UID - 314086
在線等級: 級別:0 | 在線時長:0小時 | 升級還需:5小時
註冊日期: 2008-11-25
文章: 1
精華: 0
現金: 1 金幣
資產: 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, DSATASEG, 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
erstauska 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖