section .data
welcome db "Tapez un message:", 0xA
wlen equ $ - welcome
retour db 0xA, "Vous avez écrit:", 0xA
rlen equ $ - retour
section .bss
buffer resb 32 ; Réserve 32 octets pour l'entrée
section .text
global _start
_start:
; ----- Affiche le message d'invite -----
mov rax, 1 ; syscall: write
mov rdi, 1 ; stdout
mov rsi, welcome ; buffer du message
mov rdx, wlen ; taille du message
syscall
; ----- Lecture clavier (entrée utilisateur) -----
mov rax, 0 ; syscall read
mov rdi, 0 ; stdin
mov rsi, buffer ; où stocker
mov rdx, 32 ; maximum 32 octets
syscall
mov rbx, rax ; On stocke le nombre de caractères lus dans < rbx >
; ----- Affiche un message de retour -----
mov rax, 1 ; syscall: write
mov rdi, 1
mov rsi, retour
mov rdx, rlen
syscall
; ----- Réaffiche ce que l'utilisateur a tapé -----
mov rax, 1 ; syscall: write
mov rdi, 1
mov rsi, buffer
mov rdx, rbx ; on affiche seulement ce qui a été lu
syscall
; ----- Quitte la programme proprement -----
mov rax, 60 ; syscall exit
xor rdi, rdi
syscall
c2VjdGlvbiAuZGF0YQoJd2VsY29tZSBkYiAiVGFwZXogdW4gbWVzc2FnZToiLCAweEEKCXdsZW4gZXF1ICQgLSB3ZWxjb21lCgoJcmV0b3VyIGRiIDB4QSwgIlZvdXMgYXZleiDDqWNyaXQ6IiwgMHhBCglybGVuIGVxdSAkIC0gcmV0b3VyCgpzZWN0aW9uIC5ic3MgCglidWZmZXIgcmVzYiAzMgkJCQkJOyBSw6lzZXJ2ZSAzMiBvY3RldHMgcG91ciBsJ2VudHLDqWUKCnNlY3Rpb24gLnRleHQKCWdsb2JhbCBfc3RhcnQKCl9zdGFydDoKCgk7IC0tLS0tIEFmZmljaGUgbGUgbWVzc2FnZSBkJ2ludml0ZSAtLS0tLQoJbW92IHJheCwgMQkJCQkJOyBzeXNjYWxsOiB3cml0ZQoJbW92IHJkaSwgMQkJCQkJOyBzdGRvdXQKCW1vdiByc2ksIHdlbGNvbWUJCQk7IGJ1ZmZlciBkdSBtZXNzYWdlCgltb3YgcmR4LCB3bGVuCQkJCTsgdGFpbGxlIGR1IG1lc3NhZ2UKCXN5c2NhbGwKCgk7IC0tLS0tIExlY3R1cmUgY2xhdmllciAoZW50csOpZSB1dGlsaXNhdGV1cikgLS0tLS0KCW1vdiByYXgsIDAJCQkJCTsgc3lzY2FsbCByZWFkCgltb3YgcmRpLCAwCQkJCQk7IHN0ZGluCQoJbW92IHJzaSwgYnVmZmVyCQkJCTsgb8O5IHN0b2NrZXIKCW1vdiByZHgsIDMyCQkJCQk7IG1heGltdW0gMzIgb2N0ZXRzCglzeXNjYWxsCgltb3YgcmJ4LCByYXgJCQkJOyBPbiBzdG9ja2UgbGUgbm9tYnJlIGRlIGNhcmFjdMOocmVzIGx1cyBkYW5zIDwgcmJ4ID4KCgk7IC0tLS0tIEFmZmljaGUgdW4gbWVzc2FnZSBkZSByZXRvdXIgLS0tLS0KCW1vdiByYXgsIDEJCQkJCTsgc3lzY2FsbDogd3JpdGUKCW1vdiByZGksIDEKCW1vdiByc2ksIHJldG91cgoJbW92IHJkeCwgcmxlbgoJc3lzY2FsbAoKCTsgLS0tLS0gUsOpYWZmaWNoZSBjZSBxdWUgbCd1dGlsaXNhdGV1ciBhIHRhcMOpIC0tLS0tCgltb3YgcmF4LCAxCQkJCQk7IHN5c2NhbGw6IHdyaXRlCgltb3YgcmRpLCAxCgltb3YgcnNpLCBidWZmZXIKCW1vdiByZHgsIHJieAkJCQk7IG9uIGFmZmljaGUgc2V1bGVtZW50IGNlIHF1aSBhIMOpdMOpIGx1CglzeXNjYWxsCgoJOyAtLS0tLSBRdWl0dGUgbGEgcHJvZ3JhbW1lIHByb3ByZW1lbnQgLS0tLS0KCW1vdiByYXgsIDYwCQkJCQk7IHN5c2NhbGwgZXhpdAoJeG9yIHJkaSwgcmRpCglzeXNjYWxsCg==