x86 assembly [fasm] code which takes a number and adds 155 then shifts right
push number
push frmspec
call [scanf]
sub esp, 8 ; clean stack



Cleaning up the stack is done by adding to esp. Because the stack on X86 grows downward, cleaning implies going upwards.
You make this mistake several times!



From your problem statement it's not very clear whether you want to


shift the number after the addition
shift the number as it was before the addition


Your code presently does the latter.

mov eax, [number]
add eax, 155
push eax
push [number]          &lt;------ Original number
push msg3
call [printf]
pop ecx
pop eax                &lt;------ Still original number
pop ecx
shr eax, 2             &lt;------ Shifts the original number
mov dword [number], eax




frmspec db '%d'
number dd 0


Currently your program depends on the zero stored in number. In future you might want to re-use number several times and then the zero-terminator might not be there anymore.
I think it will be more robust if you wrote

frmspec db '%d', 0
number dd 0





msg2 db 13,10, 'The final result is: %d', 0, 13, 10



You've placed the zero before the carriage return/linefeed. Those won't be outputted as a consequence!




mov dword [number], eax



FASM does not require you to write this redundant size tag (dword). It serves no purpose.