汇编语言 SCAS 指令

SCAS 指令用于搜索字符串中的特定字符或一组字符。要搜索的数据项应该在 AL(对于 SCASB),AX(对于 SCASW)或 EAX(对于 SCASD)寄存器中。要搜索的字符串应在内存中,并由 ES:DI(或 EDI)寄存器指向。

参考以下实例来了解概念:

  1. section .text
  2. global _start ;must be declared for using gcc
  3. _start: ;tell linker entry point
  4. mov ecx,len
  5. mov edi,my_string
  6. mov al , 'e'
  7. cld
  8. repne scasb
  9. je found ; when found
  10. ; If not not then the following code
  11. mov eax,4
  12. mov ebx,1
  13. mov ecx,msg_notfound
  14. mov edx,len_notfound
  15. int 80h
  16. jmp exit
  17. found:
  18. mov eax,4
  19. mov ebx,1
  20. mov ecx,msg_found
  21. mov edx,len_found
  22. int 80h
  23. exit:
  24. mov eax,1
  25. mov ebx,0
  26. int 80h
  27. section .data
  28. my_string db 'hello world', 0
  29. len equ $-my_string
  30. msg_found db 'found!', 0xa
  31. len_found equ $-msg_found
  32. msg_notfound db 'not found!'
  33. len_notfound equ $-msg_notfound

结果如下:

  1. found!

分类导航