![]() |
字串比較的問題
以下是我寫的輸入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:DATASEG, 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 |
以下是我寫的輸入2字串 比較字串內容是否相等 是則輸出y 否則輸出n
但輸入1111和11是卻是想等 是哪裡出錯了呢 找書找了很久 還是不知錯在哪 REPZ CMPSB 這個指令只能用在相同長度的字串比較 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 -------------------- 加一行 INC SI 在 TYPE1 PROC 相同位置也加一行 INC SI -------------------- JMP STR1 |
所有時間均為台北時間。現在的時間是 09:13 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *