查找字符串中字符的位置汇编
时间: 2023-07-21 17:07:46 浏览: 55
在汇编语言中,可以使用字符串指令 `LODSB` 和 `SCASB` 来查找一个字符在字符串中的位置。
下面是一个查找字符 `al` 在字符串 `ds:si` 中的位置的示例代码:
```
mov ah,0 ; 将 ah 寄存器清零
mov cx,0 ; 将 cx 寄存器清零
mov di,-1 ; 将 di 寄存器设为 -1,用于标记没有找到字符的情况
cld ; 清空方向标志位,确保 LODSB 和 SCASB 操作是向前的
mov al,'a' ; 要查找的字符
mov si,str ; 字符串地址
repne scasb ; 比较字符串中的字符和 al,直到找到相等的字符或者字符串结束
jnz not_found ; 如果没有找到,跳转到 not_found 标签
mov di,cx ; 如果找到,将 cx 的值赋给 di,即为字符在字符串中的位置
not_found:
```
在上面的代码中,使用 `LODSB` 指令逐个读取字符串中的字符,并使用 `SCASB` 指令和 `al` 寄存器中的字符比较。如果找到相等的字符,将 `cx` 寄存器中的值赋给 `di` 寄存器,即为字符在字符串中的位置。如果没有找到,`di` 寄存器的值为 -1,表示没有找到字符。
需要注意的是,在使用 `SCASB` 指令之前,需要先将方向标志位清空,确保操作是向前的。否则,操作可能会向后,导致查找到错误的字符位置。