汇编语言 CMPS 指令

CMPS 指令比较两个字符串。此指令比较 DS:SIES:DI 寄存器指向的单字节、字或双字的两个数据项,并相应设置标志。您还可以将条件跳转指令与此指令一起使用。

以下实例演示如何使用 CMPS 指令比较两个字符串:

  1. section .text
  2. global _start ;must be declared for using gcc
  3. _start: ;tell linker entry point
  4. mov esi, s1
  5. mov edi, s2
  6. mov ecx, lens2
  7. cld
  8. repe cmpsb
  9. jecxz equal ;jump when ecx is zero
  10. ;If not equal then the following code
  11. mov eax, 4
  12. mov ebx, 1
  13. mov ecx, msg_neq
  14. mov edx, len_neq
  15. int 80h
  16. jmp exit
  17. equal:
  18. mov eax, 4
  19. mov ebx, 1
  20. mov ecx, msg_eq
  21. mov edx, len_eq
  22. int 80h
  23. exit:
  24. mov eax, 1
  25. mov ebx, 0
  26. int 80h
  27. section .data
  28. s1 db 'Hello, world!',0 ;our first string
  29. lens1 equ $-s1
  30. s2 db 'Hello, there!', 0 ;our second string
  31. lens2 equ $-s2
  32. msg_eq db 'Strings are equal!', 0xa
  33. len_eq equ $-msg_eq
  34. msg_neq db 'Strings are not equal!'
  35. len_neq equ $-msg_neq

结果如下:

  1. Strings are not equal!

分类导航