BTW, Turbo C 2.01 & Borland C++ cdecl calling convention is to push everything to the stack (as predicted) from right to left, before the call, but BX don't need to be preserved by the called routine. Only BP, SI and DI (and, of course, SP). And, the caller cleans up the stack.
As in i386 calling convention, the functions has the prefix '_', unless you use fastcall calling convention, which puts an '@' prefix (and uses AX,DX and BX registers are the 3 first arguments).
If you are into Turbo Pascal, the convention is the same, but the arguments are pushed from left to right and the called routine cleans up the stack (as far as I know there's no 'fastcall' convention).