main.asm 616 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. %define SYS_EXIT 60
  2. segment .data
  3. src: db 15, 1, 15, 1, 15, 1, 15, 1
  4. shift: db 13, 13, 13, 13, 13, 13, 13, 13
  5. cap: db 25, 25, 25, 25, 25, 25, 25, 25
  6. cap0: db 26, 26, 26, 26, 26, 26, 26, 26
  7. segment .text
  8. global _start
  9. rot13_8b:
  10. movq mm0, rax
  11. movq mm1, [shift]
  12. paddb mm0, mm1
  13. movq mm2, mm0
  14. movq rax, mm0
  15. movq mm1, [cap]
  16. pcmpgtb mm0, mm1
  17. movq rax, mm0
  18. movq mm1, [cap0]
  19. pand mm0, mm1
  20. movq rax, mm0
  21. psubb mm2, mm0
  22. movq rax, mm2
  23. ret
  24. _start:
  25. mov rax, [src]
  26. call rot13_8b
  27. call rot13_8b
  28. mov rax, SYS_EXIT
  29. mov rdi, 0
  30. syscall
  31. ret