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 (将#修改为@)