汇编题目结果不对,比较两个字符串是否相同,MASM的程序,求解释。总是显示Not Equal。谢谢!

IOMACROX,YLEADX,XMOVAH,YINT21HENDMDATASEGMENTSTRING1DB'ding'STRING2DB'ding'NODB13,10,... IO MACRO X,Y
LEA DX,X
MOV AH,Y
INT 21H
ENDM

DATA SEGMENT
STRING1 DB 'ding'
STRING2 DB 'ding'
NO DB 13,10,'Not Equal!$'
YES DB 13,10,'Equal!$'
DATA ENDS

ISTACK SEGMENT PARA STACK
DB 20H DUP(0)
ISTACK ENDS

CODE SEGMENT
ASSUME CS:CODE,SS:ISTACK,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,ISTACK
MOV SS,AX
LEA SI,STRING1
LEA DI,STRING2
MOV CX,4
CLD
REPZ CMPSW

JNZ NOTE ;不相等
IO YES,9 ;相等
JMP EXIT
NOTE: IO NO,9 ;不相等时的情况
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
展开
 我来答
百度网友dd2a4ae
2013-05-12 · TA获得超过1.6万个赞
知道大有可为答主
回答量:2628
采纳率:11%
帮助的人:1651万
展开全部
4个“字节”的字符串,你用吵旦4次“字”的比较,越界升兆扰后,当猜前然会不一样啦。

你只需要将 REPZ CMPSW 改成 REPZ CMPSB 就对了。
追问
谢谢您的回答,我弄错了,的确是CMPSB
我的意思就是在CMPSB的情况下结果不对
您再给看看?
追答
抱歉,我疏忽了。

确实还有一处错误:
你没有将ES设置成跟DS相同。

串比较,比的是数据段和附加段中的两个字串。两个串在同一个段中时,应将ES和DS设为相同值。

在第二条指令 MOV DS, AX 后面再加一行 : MOV ES, AX ,就真的行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式