컴퓨터/C/C++
공용체로 레지스트 표현;;
Hikasiru
2006. 3. 24. 22:18
#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;
}
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;
};
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;
};