主题:为什么不能正确比较奇数位上的字符
CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DB 'MATCH',0DH,0AH,'$'
MESS2 DB 'NO MATCH',0DH,0AH,'$'
MESS3 DB 'INPUT STRING1:',0DH,0AH,'$'
MESS4 DB 'INPUT STRING2:',0DH,0AH,'$'
MAXLEN1 DB 81
ACTLEN1 DB ?
STRING1 DB 81 DUP(?)
MAXLEN2 DB 81
ACTLEN2 DB ?
STRING2 DB 81 DUP(?)
DATA ENDS
STACK SEGMENT STACK
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA;SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
MOV AH,09
MOV DX,OFFSET MESS3
INT 21H
MOV AH,0AH
MOV DX,OFFSET MAXLEN1
INT 21H
CRLF
MOV AH,09H
MOV DX,OFFSET MESS4
INT 21H
MOV AH,0AH
MOV DX,OFFSET MAXLEN2
INT 21H
CRLF
CLD
MOV SI,OFFSET STRING1
MOV CL,[SI-1]
MOV CH,00H
MOV SI,OFFSET STRING2
MOV DI,OFFSET STRING1
KKK: CMPSB
JNZ GGG
INC DI
INC SI
LOOP KKK
MOV AH,09H
MOV DX,OFFSET MESS1
INT 21H
JMP PPP
GGG: MOV AH,09H
MOV DX,OFFSET MESS2
INT 21H
PPP: MOV AX,4C00H
INT 21H
CODE ENDS
END START
以上是字符串比较程序
但是以上程序只能比较奇数位的字符,偶数位上的不能正确解释,请指教
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DB 'MATCH',0DH,0AH,'$'
MESS2 DB 'NO MATCH',0DH,0AH,'$'
MESS3 DB 'INPUT STRING1:',0DH,0AH,'$'
MESS4 DB 'INPUT STRING2:',0DH,0AH,'$'
MAXLEN1 DB 81
ACTLEN1 DB ?
STRING1 DB 81 DUP(?)
MAXLEN2 DB 81
ACTLEN2 DB ?
STRING2 DB 81 DUP(?)
DATA ENDS
STACK SEGMENT STACK
STA DB 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA;SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
MOV AH,09
MOV DX,OFFSET MESS3
INT 21H
MOV AH,0AH
MOV DX,OFFSET MAXLEN1
INT 21H
CRLF
MOV AH,09H
MOV DX,OFFSET MESS4
INT 21H
MOV AH,0AH
MOV DX,OFFSET MAXLEN2
INT 21H
CRLF
CLD
MOV SI,OFFSET STRING1
MOV CL,[SI-1]
MOV CH,00H
MOV SI,OFFSET STRING2
MOV DI,OFFSET STRING1
KKK: CMPSB
JNZ GGG
INC DI
INC SI
LOOP KKK
MOV AH,09H
MOV DX,OFFSET MESS1
INT 21H
JMP PPP
GGG: MOV AH,09H
MOV DX,OFFSET MESS2
INT 21H
PPP: MOV AX,4C00H
INT 21H
CODE ENDS
END START
以上是字符串比较程序
但是以上程序只能比较奇数位的字符,偶数位上的不能正确解释,请指教