rdtlib.asm 572 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. ;; library functions for rdtmain - test of rdx linking and execution
  2. ;; library function = _strcmp, defined as in C
  3. [SECTION .text]
  4. [BITS 32]
  5. [GLOBAL _strcmp]
  6. _strcmp:
  7. push ebp
  8. mov ebp,esp
  9. ;; ebp+8 = first paramater, ebp+12 = second
  10. mov esi,[ebp+8]
  11. mov edi,[ebp+12]
  12. .loop:
  13. mov cl,byte [esi]
  14. mov dl,byte [edi]
  15. cmp cl,dl
  16. jb .below
  17. ja .above
  18. or cl,cl
  19. jz .match
  20. inc esi
  21. inc edi
  22. jmp .loop
  23. .below:
  24. mov eax,-1
  25. pop ebp
  26. ret
  27. .above:
  28. mov eax,1
  29. pop ebp
  30. ret
  31. .match:
  32. xor eax,eax
  33. pop ebp
  34. ret
  35. [SECTION .data]
  36. [GLOBAL _message]
  37. _message: db 'hello',0