GLOBAL _start
SEGMENT .text
_start:
mov eax,4 ; N function=write
mov ebx,1 ; N handle=1 (stdout)
mov ecx, txt ; address of buf
mov edx,16 ; number of byte
int 80h
mov eax,3 ; N function=read
mov ebx,0 ; 0 handle=0 (stdin)
mov ecx, buf ; address of buf
mov edx,80 ; number of byte
int 80h
mov [len],eax ;save length buf
mov byte [buf+1],'!'
mov eax,4 ; N function=write
mov ebx,1 ; N handle=1 (stdout)
mov ecx, buf ; address of buf
mov edx,[len] ; number of byte
int 80h
mov eax,1 ; function=exit
int 80h
SEGMENT .data
buf times 80 db 0 ;
len dd 0
txt db 'Enter the text '
R0xPQkFMIF9zdGFydAogICAgU0VHTUVOVCAudGV4dApfc3RhcnQ6CiAgICAgbW92IGVheCw0IDsgTiBmdW5jdGlvbj13cml0ZQogICAgIG1vdiBlYngsMSA7IE4gaGFuZGxlPTEgKHN0ZG91dCkKICAgICBtb3YgZWN4LCB0eHQgOyBhZGRyZXNzIG9mIGJ1ZgogICAgIG1vdiBlZHgsMTYgOyBudW1iZXIgb2YgYnl0ZQogICAgIGludCA4MGgKCiAgICAgbW92IGVheCwzIDsgTiBmdW5jdGlvbj1yZWFkCiAgICAgbW92IGVieCwwIDsgMCBoYW5kbGU9MCAoc3RkaW4pCiAgICAgbW92IGVjeCwgYnVmIDsgYWRkcmVzcyBvZiBidWYKICAgICBtb3YgZWR4LDgwIDsgbnVtYmVyIG9mIGJ5dGUKICAgICBpbnQgODBoCgogICAgIG1vdiBbbGVuXSxlYXggO3NhdmUgbGVuZ3RoIGJ1ZgogICAgIG1vdiBieXRlIFtidWYrMV0sJyEnCgogICAgIG1vdiBlYXgsNCA7IE4gZnVuY3Rpb249d3JpdGUKICAgICBtb3YgZWJ4LDEgOyBOIGhhbmRsZT0xIChzdGRvdXQpCiAgICAgbW92IGVjeCwgYnVmIDsgYWRkcmVzcyBvZiBidWYKICAgICBtb3YgZWR4LFtsZW5dIDsgbnVtYmVyIG9mIGJ5dGUKICAgICBpbnQgODBoCgogICAgIG1vdiBlYXgsMSA7IGZ1bmN0aW9uPWV4aXQKICAgICBpbnQgODBoIAogICAgIApTRUdNRU5UIC5kYXRhCiAgICBidWYgdGltZXMgODAgZGIgMCA7CglsZW4gZGQgMAoJdHh0IGRiICdFbnRlciB0aGUgdGV4dCAn