私はbcc32(tasm32)しかありません

C/C++ の union や bitfield について、
アセンブラは、これらをレジスタに使うかどうかに
消極的なのでしょうか?

たとえば、uchar*2 を ushort*1 にパックするには
 mov al, c0
 mov ah, c1
で済むので、そうなるように期待して
 union X {
  unsigned short ushort;

  struct {
   unsigned char low;
   unsigned char hi;
  };
 };

 x.low = c0;
 x.hi = c1;
と書いても、レジスタを使わずに
スタックを使っているようなのですが…