请教一下字符串比较函数CMPSB的用法
我编了一个简单的比较字符串函数的程序,结果放在RESULT内存单元里,使用的是CMPSB函数,
为了测试,用的是两个完全相同的串,但是结果就是不对:
DATA SEGMENT
STR1 DB 'ABCD' ;STR1和STR2XIANG相同,结果应该是'Y'
COUNT DB $ - STR1 ;字符串个数
STR2 DB 'ABCD'
RESULT DB ?
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP (0)
STACK1 ENDS
COSEG SEGMENT
ASSUME CS:COSEG,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV DI,OFFSET STR1
MOV SI,OFFSET STR2
MOV CH,0
MOV CL,COUNT ;放入循环次数
CLD
LOP: CMPSB ;如果使用CMPSB函数,结果显示是'N'
;MOV DL,[DI] ;如果不用CMPSB而用下面几条语句,结果是正确的'Y'
;CMP DL,[SI]
;PUSHF
;INC DI
;INC SI
;POPF
JNZ NOTEQU
LOOP LOP
MOV RESULT,'Y'
JMP END0
NOTEQU: MOV RESULT,'N'
END0: MOV DL,RESULT
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
COSEG ENDS
END START
因为我看的书是8086/8088宏汇编语言,比较旧。我用的是MASM6.11,32位的迅驰处理器,个人觉得CMPSB在我的这个程序里可以用
MOV DL,[DI]
CMP DL,[SI]
PUSHF
INC DI
INC SI
POPF
来代替,请教一下程序的问题是硬件问题还是我使用CMPSB的方法不对?