アセンブリの練習のためにbmi(Body Mass Index)を計算するプログラムを書いています。
最初にyour_heightを表示してからstdinを読み込もうとするのですが、your_heightの最初の1文字を表示した後、すぐにプログラムが終了してしまいます
なぜなのでしょうか?

環境: Ubuntu 16.04 x86_64 (gccでのコンパイル時に-m32をつけてx86として実行)

.data
emessage: .string "file open error\n"
your_height: .string "Please enter the your height  (m):  "
your_weight: .string "Please enter the your weight  (kg):  " 
newline: .string "\n"

.bss
tmp: .skip 128, 0x00

.text
.global main
main:
    push %ebp
    movl %esp, %ebp
    pushl $your_height
    call print
    call read
    pushl $your_weight
    call print
    call read
    movl -4(%ebp), %eax
    movl -8(%ebp), %ebx
    divl %ebx
    divl %ebx


read:
    movl $3, %eax
    movl $0, %ebx
    movl $tmp, %ecx
    movl $64, %edx
    int $0x80
    cmpl $-1, %eax
    je write_error_message
    movl %eax, %esi
    pushl %esi
    ret

write_error_message:
    movl $4, %eax
    movl $1, %ebx
    movl $emessage, %ecx
    movl $16, %edx
    int $0x80
    call exit

exit:
    movl $1, %eax;
    xorl %ebx, %ebx;
    int $0x80

print:
    movl $4, %eax
    movl 4(%esp), %ecx
    movl $1, %ebx
    movl $1, %edx
write:
    cmpb $0x00, (%ecx)
    je ret_func
    int $0x80
    incl %ecx
    jmp write


ret_func:
    ret