I think I see a subtle error in your code...
prompt_add_int:
mov eax,4
mov ebx,1
mov ecx,message_add_int
mov edx,lmessage_add_int
-------------------------
This is okay, 'cause "lmessage+add_int" is an equ:
message_add_int: db 'please enter your number',10
lmessage_add_int: equ $ - message_add_int
----------------------
int 0x80
get_add_int:
mov eax,3
mov ebx,1
mov ecx,buffer_add_int
mov edx,lbuffer_add_int
-----------------------
In this case, "lbuffer_add_int" is a variable, with "[contents]" 1.
lbuffer_add_int: dd 1
You're putting the address in edx! A bit more than you intend to read!
----------------------------
int 0x80
I would point out that you're reading from STDOUT, but it turns out that this doesn't matter! You can read from STDOUT, and write to STDIN, and it works. Dunno what happens if you try to read from STDERR. Must try that...
Best,
Frank