Are you sure that all your CALLs and RETs match up. That is are they
all far and near. Specifically, after you return to the assembly routine
do you restore all registers and do an IRET instead of a regular RET.
(IRET pops 3 words, the saved return address, and the flags).
Tom Rosenfeld @ AT&T Information Systems Labs, Middletown, NJ
Disclaimer: I don't claim anything.