Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 是否在字符串中查找指定字母的匹配项?_Assembly_X86 - Fatal编程技术网

Assembly 是否在字符串中查找指定字母的匹配项?

Assembly 是否在字符串中查找指定字母的匹配项?,assembly,x86,Assembly,X86,我也尝试过这样定义字符串数组: org 100h mov si, 0 mov di, 0 back: cmp string[si], 'a' inc si jz found jmp nfound found: inc di nfound: loop back ret string db 'n','a','n','b','o','N','a','n','a','w','a','g','o','s','h','t'

我也尝试过这样定义字符串数组:

org 100h

   mov si, 0
   mov di, 0    

back: 

   cmp string[si], 'a'
   inc si

   jz found

   jmp nfound

   found:
   inc di

   nfound:

loop back

ret
  string db 'n','a','n','b','o','N','a','n','a','w','a','g','o','s','h','t','b','o','Q','a','s','a','b'

jz的假设从来都不是真的,有什么问题吗?如果我删除si增量指令,条件将返回true

如果阅读英特尔手册中的
INC
说明,您将看到:

受影响的标志
CF
标志不受影响。根据结果设置
SF
ZF
AF
PF
标志


因此,您的
jzfound
指令基于
inc si
的结果而不是
cmp
的结果进行分支。我建议您将
inc si
指令移到
环回

通过检查零标志计算比较结果之前的右侧

cmp字符串[si]之后,“a”如果两者相同,则将设置零标志。因此,您应该在比较之后立即使用
jzfind

在您的代码中,您在比较后使用的是
inc si
,并且您丢失了比较结果,在这种情况下,如果
si
的值在
increment
之后为零,则只会设置零标志

string db "nan bo Nanawa gosht bo Qasab"