汇编复习(在字符串搜索特定字符,成功显示其位置,否则显示"not found")

data segment
    str1 db "loveYHigh"
    len_str1 equ $-str1
    s_fail db "not found$"
    s_element db "Y"
data ends

code segment
    assume cs:code,ds:data
    start:
        mov ax,data
        mov ds,ax
        lea si,str1
        mov al,s_element
        mov bx,1h
        mov cx,len_str1
    search:
        cmp [si],al
        jz  show
        inc bx
        inc si
        loop search
        lea dx,s_fail
        mov ah,09h
        int 21h
        jmp quit
    show:
        add bx,30h
        mov dx,bx
        mov ah,02h
        int 21h
        jmp quit
    quit:
        mov ah,4ch
        int 21h
    code ends
end start

str1被搜索的字符串 len_str1是str1的长度(equ是伪指令 相等于赋值 $-xxxx可以计算xxxx的长度)后面两个分别是没找到的输出以及索要寻找的字符

在这里插入图片描述

整体思想就是设置次数为len_str1的循环然后遍历str1 然后bx为索引,找到输出索引找不到索引就加一,如果循环结束还没找到就输出 not found

在这里插入图片描述
其他指令在其他博文里面有介绍了 这里不赘述了 再补充一个小知识

如何在汇编里面看标志位

在这里插入图片描述

对应debug右下角的位置 大家可以记一下

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38867101/article/details/85996758