当前位置: 代码迷 >> 汇编语言 >> 汇编语言比较输入字符串是否相等小程序解决思路
  详细解决方案

汇编语言比较输入字符串是否相等小程序解决思路

热度:8757   发布时间:2013-02-26 00:00:00.0
汇编语言比较输入字符串是否相等小程序
.386
DATA SEGMENT USE16
STR1 DB 80
DB 0
DB 80 DUP(0)
STR2 DB 80
DB 0
DB 80 DUP(0)
BUF1 DB 0DH,0AH,'MATCH!$'
BUF2 DB 0DH,0AH,'NO MATCH!$'
BUF3 DB 0DH,0AH,'$'
DATA ENDS
STACK SEGMENT USE16 STACK
DB 200 DUP(0)
STACK ENDS

CODE SEGMENT USE16
ASSUME DS:DATA,ES:DATA,SS:STACK,CS:CODE
START: MOV AX,DATA
MOV DS,AX

LEA DX,STR1
MOV AH,10
INT 21H

LEA DX,BUF3
MOV AH,9
INT 21H

LEA DX,STR2
MOV AH,10
INT 21H

MOV AL,STR1+1
MOV BL,STR2+1
CMP AL,BL
JNE EXIT1

MOV AL,STR1+1
MOV BL,STR2+1
CMP AL,BL
JNE EXIT1

LEA SI,STR1+2
LEA DI,STR2+2
MOV CL,STR1+1
REPZ CMPSB ///输入相同字符串后,这里执行完cx应该为0,为什么cx只减一???
JNE EXIT1

LEA DX,BUF1
MOV AH,9
INT 21H
EXIT: MOV AH,4CH
INT 21H
EXIT1: LEA DX,BUF2
MOV AH,9
INT 21H
JMP EXIT
CODE ENDS
END START
刚学不久。。。新手,简单的问题,求指教。。

------解决方案--------------------------------------------------------
经过调试多次ZF=1,怎么会变成ZF=0呢?你还是仔细看看吧:

AX=0A01 BX=0001 CX=0101 DX=0052 SP=00C8 BP=0000 SI=0002 DI=0054
DS=0B55 ES=0B45 SS=0B61 CS=0B6E IP=003F NV UP EI PL ZR NA PE NC
0B6E:003F F3 REPZ
0B6E:0040 A6 CMPSB
  相关解决方案