微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SCAS 指令结果不一致

如何解决SCAS 指令结果不一致

我是汇编编程的新手。这是我的 2 个代码

1st - 从互联网上搜索

.DATA
BLOCK DB 'You & Me'
COUNT DW 13
SEARCH DB '&'
FOUND DB 'String Found$'
NOTFOUND DB 'String NOT Found$'

.CODE
.STARTUP

MOV AX,@DATA
MOV DS,AX
MOV ES,AX
MOV CX,COUNT

MOV DI,OFFSET BLOCK
MOV AL,SEARCH
REPNE SCASB
JZ YES 

MOV DX,OFFSET NOTFOUND
MOV AH,09
INT 21H
JMP OVER

YES:
MOV DX,OFFSET FOUND
MOV AH,09
INT 21H    

OVER:
MOV AH,4CH
INT 21H
 

.EXIT
END

第二 - 从我的书中

.DATA
BLOCK DB 'You & Me'

.CODE
.STARTUP

MOV DI,OFFSET BLOCK
MOV CX,13
MOV AL,'&'
REPNE SCASB
 

.EXIT
END

我知道如果找到字符串,SCAS 指令会将 ZF 更改为 1,如果未找到,则将 ZF 更改为 0。我也知道在 REPNE SCASB 的末尾,DI 将在第一次找到字符串时包含字符串的地址。我的问题是,为什么我的第二个代码不起作用?是不是因为第一个代码中的 MOV AX,@DATA . . . 使我的第一个代码起作用但我的第二个代码不起作用?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。