fork download
  1. section .data
  2. welcome db "Tapez un message:", 0xA
  3. wlen equ $ - welcome
  4.  
  5. retour db 0xA, "Vous avez écrit:", 0xA
  6. rlen equ $ - retour
  7.  
  8. section .bss
  9. buffer resb 32 ; Réserve 32 octets pour l'entrée
  10.  
  11. section .text
  12. global _start
  13.  
  14. _start:
  15.  
  16. ; ----- Affiche le message d'invite -----
  17. mov rax, 1 ; syscall: write
  18. mov rdi, 1 ; stdout
  19. mov rsi, welcome ; buffer du message
  20. mov rdx, wlen ; taille du message
  21. syscall
  22.  
  23. ; ----- Lecture clavier (entrée utilisateur) -----
  24. mov rax, 0 ; syscall read
  25. mov rdi, 0 ; stdin
  26. mov rsi, buffer ; où stocker
  27. mov rdx, 32 ; maximum 32 octets
  28. syscall
  29. mov rbx, rax ; On stocke le nombre de caractères lus dans < rbx >
  30.  
  31. ; ----- Affiche un message de retour -----
  32. mov rax, 1 ; syscall: write
  33. mov rdi, 1
  34. mov rsi, retour
  35. mov rdx, rlen
  36. syscall
  37.  
  38. ; ----- Réaffiche ce que l'utilisateur a tapé -----
  39. mov rax, 1 ; syscall: write
  40. mov rdi, 1
  41. mov rsi, buffer
  42. mov rdx, rbx ; on affiche seulement ce qui a été lu
  43. syscall
  44.  
  45. ; ----- Quitte la programme proprement -----
  46. mov rax, 60 ; syscall exit
  47. xor rdi, rdi
  48. syscall
  49.  
Success #stdin #stdout 0s 5308KB
stdin
1
2
10
42
11
stdout
Tapez un message:

Vous avez écrit:
1
2
10
42
11