main.asm 720 B

12345678910111213141516171819202122232425262728293031323334353637
  1. %define SYS_EXIT 60
  2. segment .data
  3. src: db 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15
  4. shift: db 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13
  5. cap: db 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25
  6. cap0: db 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26
  7. segment .text
  8. global _start
  9. rot13_16b:
  10. movaps xmm0, [rax]
  11. movaps xmm1, [shift]
  12. paddb xmm0, xmm1
  13. movaps xmm2, xmm0
  14. movaps xmm1, [cap]
  15. pcmpgtb xmm0, xmm1
  16. movaps xmm1, [cap0]
  17. pand xmm0, xmm1
  18. psubb xmm2, xmm0
  19. movaps [rax], xmm2
  20. ret
  21. _start:
  22. mov rax, src
  23. call rot13_16b
  24. call rot13_16b
  25. mov rax, SYS_EXIT
  26. mov rdi, 0
  27. syscall
  28. ret