Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. ; rotbmp.asm
  2.  
  3. ; kompilacja NASM:
  4. ; nasm -f elf rotbmp.asm
  5.  
  6. global _detect
  7.  
  8. ; definicja symbolicznych adresów parametrów
  9. ; i zmiennych lokalnych
  10. %define img [ebp+8]
  11. %define width [ebp+12]
  12.  
  13. %define row_bytes [ebp-4]
  14. %define img_line [ebp-8]
  15. %define img_col [ebp-12]
  16. %define count [ebp-16]
  17.  
  18. _detect:
  19. ; utwórz ramkę stosu
  20. push ebp
  21. mov ebp, esp
  22. sub esp, 16
  23.  
  24. ; odłóż na stos używane rejestry
  25. push ebx
  26. push esi
  27. push edi
  28.  
  29. mov ecx,1
  30. mov width, ecx
  31. ; oblicz długość linii pikseli
  32. ; (w bajtach)
  33. mov eax, 320
  34. lea edx, [eax+eax*2]
  35. add edx, 3
  36. and edx, 0fffffffch
  37. mov row_bytes, edx
  38.  
  39. ; zmienna count inicjowana jest szerokością bitmapy
  40. mov count, eax
  41.  
  42. ; linia pikseli
  43. mov esi, img
  44. mov img_line, esi
  45. add esi, 3
  46. lolxD:
  47.  
  48. ; looking for black
  49. cmp BYTE [esi], 0
  50. je exit
  51. add ecx, 1
  52. add esi, 3
  53. jmp lolxD
  54. exit:
  55. mov eax, ecx
  56.  
  57. ; ściągnięcie rejestrów ze stosu
  58. pop edi
  59. pop esi
  60. pop ebx
  61.  
  62. ; powrót z procedury
  63. mov esp, ebp
  64. pop ebp
  65. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement