首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-04-12 
汇编语言比较输入字符串是否相等小程序.386DATASEGMENTUSE16STR1DB80DB0DB80DUP(0)STR2DB80DB0DB80DUP(0)B

汇编语言比较输入字符串是否相等小程序
.386
DATA SEGMENT USE16
STR1DB 80
DB 0
DB 80 DUP(0)
STR2DB 80
DB 0
DB 80 DUP(0)
BUF1DB 0DH,0AH,'MATCH!$'
BUF2DB 0DH,0AH,'NO MATCH!$'
BUF3DB 0DH,0AH,'$'
DATA ENDS
STACKSEGMENT USE16 STACK
DB 200 DUP(0)
STACKENDS

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

LEADX,STR1
MOVAH,10
INT21H

LEA DX,BUF3
MOV AH,9
INT21H

LEA DX,STR2
MOV AH,10
INT 21H

MOV AL,STR1+1
MOVBL,STR2+1
CMPAL,BL
JNEEXIT1

MOV AL,STR1+1
MOVBL,STR2+1
CMPAL,BL
JNEEXIT1

LEASI,STR1+2
LEA DI,STR2+2
MOVCL,STR1+1
REPZCMPSB ///输入相同字符串后,这里执行完cx应该为0,为什么cx只减一???
JNEEXIT1

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
CODEENDS
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

热点排行