fork(2) download
  1. ;
  2. ; NASM 2.14 x64
  3. ;
  4.  
  5. SECTION .data
  6. happy: db '! yaD sremmargorP yppaH', 0xA
  7. happyLen: equ $-happy
  8.  
  9. SECTION .text
  10. GLOBAL _start
  11.  
  12. _start:
  13. mov rcx, happyLen
  14. mov rax, happy
  15. mov rsi, rax ; rsi на первый символ строки
  16. add rax, rcx ;
  17. mov rdi, rax ;
  18. sub rdi, 2 ; rdi на последний символ строки, не считая перевода строки
  19. shr rcx, 1 ; rcx половина длины строки
  20.  
  21. reverseLoop:
  22.  
  23. mov al, [rsi] ; грузим символы
  24. mov bl, [rdi] ;
  25. mov [rsi], bl ; обмениваем
  26. mov [rdi], al ;
  27. inc rsi ; корректируем указатели
  28. dec rdi ;
  29. dec rcx ; корректируем счетчик цикла
  30. jnz reverseLoop
  31.  
  32. ; Печатаем
  33.  
  34. mov rax,4 ; системный вызов 4 ('write')
  35. mov rbx,1 ; файловый дискриптор 1 (STDOUT)
  36. mov rcx,happy ; строка вывода
  37. mov rdx,happyLen ; длина строки
  38. int 80h ; системный вызов ядра
  39.  
  40. ; Завершение
  41.  
  42. mov rax,1 ; системный вызов 1 ('exit')
  43. mov rbx,0 ; код выхода 0
  44. int 80h ; системный вызов ядра
Success #stdin #stdout 0s 4508KB
stdin
Standard input is empty
stdout
Happy Programmers Day !