汇编字符串操作,运行结果错误

问题遇到的现象和发生背景

汇编字符串操作
string当中已经存放了待检测的字符串,要实现的功能是检测所有的“ABC”子串,不区分大小写
slength是字符串长度

用代码块功能插入代码,请勿粘贴截图

mov ecx,slength
mov eax,0
mov esi,0
L1:
    mov bl,[string+esi]
    inc esi
    and bl,11011111b
    sub bl,65
      cmp bl,0
      jz L2
      jnz L5
          L2:
            mov bl,[string+esi]
            inc esi
            and bl,11011111b
            sub bl,66
              cmp bl,0
              jz L3
              jnz L5
                  L3:
                    mov bl,[string+esi]
                    inc esi
                    AND bl,11011111b
                    SUB bl,67
                      cmp bl,0
                      jz L4
                      jnz L5
                          L4:
                            inc eax
                            L5:
                                LOOP L1


运行结果及报错内容

WA

我的解答思路和尝试过的方法

esi累加,用来遍历字符串
外层L1 LOOP循环,内三层相当于IF条件分支语句,如果均符合条件,作为最终计数器的eax+1,否则重新回到L1循环。

我想要达到的结果

想知道这段代码有哪些问题

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^