Here are some comments on your code:
handleInput:
xor ecx, ecx ;ecx=0
xor eax, eax ;eax=0
mov [inputValue], byte 0 ;inputValue=0 - It is hard to discern what inputValue is from what you provided.
convertInput:
mov al, byte [input + ecx] ;move "the value" at input+ecx into the lowest byte of eax - What is this value?
sub eax, '0' ;subtract 48 from "the value"
push eax ;push "the value" to the stack - Is this an arg for printDebug?
cmp ecx, 1 ;compare ecx to 1 - Will set the zero flag state
inc ecx ;ecx=ecx+1 - This will cause the zero flag state of "cmp ecx, 1" to be overwritten
call printDebug ;call printDebug - Since you didnt provide the code for this, we don't know what it does to the zero flag. But there is a good possibility that it overwrites the overwritten zero flag state.
jne convertInput ;jump to convertInput if zero flag=0 - Zero flag will always be 0, since "inc ecx" never results in ecx+1=0. This is probably why you get a infinite loop.
Sorry about the formatting issues, the forum did a hack job on my tabulation.