#include
struct hregs{
     char al;
     char ah;
};
union regs{
     struct hregs h;
     int ax;
};
int main()
{
     union regs reg;
     reg.h.ah = 0x1A;
     reg.h.al = 0x2B;
     printf("ah:%X\n", reg.h.ah);
     printf("al:%X\n", reg.h.al);
     printf("ax:%hX\n", reg.ax);
     return 0;
}
Microsoft C에 있어서의 레지스터 표현
/* word registers */
struct WORDREGS {
     unsigned int ax;
     unsigned int bx;
     unsigned int cx;
     unsigned int dx;
     unsigned int si;
     unsigned int di;
     unsigned int clags;
};
/* byte registers */
struct BYTEREGS {
     unsigned char al, ah;
     unsigned char bl, bh;
     unsigned char cl, ch;
     unsigned char dl, dh;
};
/* general purpose registers union -
* overlays the corresponding word and byte registers.
*/
union REGS {
     struct WORDREGS x;
     struct BYTEREGS h;
};