Wait a minute.... the output of your program cant be right.... when a program terminates on a Linux system isn't the %ebx register used as the exit status?

such as:
Code:
.section .text
     .globl _start
_start:
         movl $1, %eax
         movl $123, %ebx
         int $0x80
the output will look like this:

$as -o test.o test.s
$ld -o test test.o
$./test
$echo $?
123
$

Or maybe the C program is moving the %eax register to the %ebx register.... Hmm too bad im not in vmware.