¿¬»êÀÚ |
³»¿ë |
¿¹ |
++ |
1Áõ°¡ |
a++; /* a=a+1°ú µ¿ÀÏ*/ |
-- |
1°¨¼Ò |
a--; /* a=a-1°ú µ¿ÀÏ*/ |
?: |
ÆÇ´Ü |
y=(a<0) ? a : -a; /* a°¡ 0º¸´Ù Å©¸é y=a, 0º¸´Ù ÀÛÀ¸¸é y=-a */ |
sizeof |
µ¥ÀÌŸÇüÀÇ Å©±â |
y=sizeof(int); /*Á¤¼öÇü(int)´Â 2¹ÙÀÌÆ® Å©±âÀ̹ǷÎ, y´Â 2°¡µÈ´Ù*/ |
ºñÆ®´ÜÀ§ ³í¸®¿¬»êÀÚ
ÀϹÝÀûÀÎ º¯¼ö´Â ¸ðµÎ ¹ÙÀÌÆ®´ÜÀ§(ȤÀº ¿öµå´ÜÀ§)·Î 󸮵ÇÁö¸¸, ³»ÀåÇüÁ¦¾î±â¿¡¼´Â ºñÆ®´ÜÀ§·Î º¯¼ö¸¦ Á¶ÀÛÇÏ´Â °æ¿ì°¡ ¸¹´Ù. ºñÆ®´ÜÀ§ ³í¸®¿¬»êÀÚ´Â Çش纯¼ö¿¡ ´ëÇØ ºñÆ®´ÜÀ§·Î ¿¬»êÀ» ¼öÇàÇÑ´Ù.
¿¬»êÀÚ |
³»¿ë |
¿¹ |
& |
ºñÆ®´ÜÀ§ ³í¸®°ö(AND) |
y = a&0x0F;
/*aÀÇ ÇÏÀ§ 4ºñÆ®¸¸ ¾ò´Â´Ù.*/ |
| |
ºñÆ®´ÜÀ§ ³í¸®ÇÕ(OR) |
y = a|0x0F
/*aÀÇ ÇÏÀ§ 4ºñÆ®¸¦ ¸ðµÎ 1·Î ¸¸µç´Ù*/ |
~ |
ºñÆ®´ÜÀ§ ºÎÁ¤(1ÀÇ º¸¼ö) |
y = ~0x00; /*y¸¦ 0xFF·Î ¸¸µç´Ù*/ |
^ |
ºñÆ®´ÜÀ§ ¹èŸÀû OR |
y = a^0xFF;
/*aÁß ÇØ´çºñÆ®°¡ 1À̸é 0À¸·Î ¸¸µç´Ù*/; |
<< |
¿ìÃøÀ¸·Î À̵¿ |
y = 0x1<<2; /*0x1À» ¿ìÃøÀ¸·Î 2ºñÆ® À̵¿, y=0x4°¡ µÈ´Ù*/ |
>> |
ÁÂÃøÀ¸·Î À̵¿ |
y = 0x2>>1; /*0x2¸¦ ÁÂÃøÀ¸·Î 1ºñÆ® À̵¿,y=0x1ÀÌ µÈ´Ù*/ |
if¹®
°¡Àå ±âº»ÀûÀÎ ¼±Åù®À¸·Î ÆÇ´Ü°á°ú°¡ ÂüÀΰ¡ °ÅÁþÀΰ¡¿¡ µû¶ó ½ÇÇàÇØ¾ß ÇÒ ¹®ÀåÀ» ¼±ÅÃÇÑ´Ù. if°á°ú ó¸®ÇØ¾ß ÇÒ ¹®ÀåÀÌ ´ÜÀÏ ¹®ÀåÀ̶ó¸é Áß°ýÈ£ {, } °¡ ÇÊ¿ä ¾øÁö¸¸ 2°³ÀÌ»óÀÇ ¹®ÀÚ¸¦ ¿¬¼ÓÀ¸·Î ó¸®ÇØ¾ß ÇÑ´Ù¸é Áß°ýÈ£¸¦ »ç¿ëÇÏ¿© ºí·ÏÈ ÇØ¾ß ÇÑ´Ù
if(x>100) printf(x´Â 100º¸´Ù Å©´Ù);
else printf(x´Â 100 º¸´Ù À۰ųª °°´Ù¡°);
if(x>=10)
switch/case ¹®
ºñ±³°á°ú¿¡ µû¶ó ½ÇÇàÇØ¾ß ÇÒ ÄÚµåÀÇ Á¾·ù°¡ ¿©·¯°¡ÁöÀÏ °æ¿ì »ç¿ëÇÑ´Ù. ºñ±³°á°ú¿Í ÀÏÄ¡ÇÏ´Â case¿¡ ÇØ´çµÇ´Â ¹®ÀåÀ» break Å°¿öµå¸¦ ¸¸³¯ ¶§±îÁö ½ÇÇàÇÑ´Ù. switch·Î ¼±ÅÃÇÏ°íÀÚ ÇÏ´Â º¯¼ö´Â ¹Ýµå½Ã Á¤¼öÇü(char, int, long µî)À̾î¾ß ÇÑ´Ù.
char ch;
switch(ch) //ch=¹®ÀÚÇü Á¤¼ö
{
case ''a'': printf(ch´Â aÀÔ´Ï´Ù¡°);
case ''b'': /* ch°¡ ''b''ÀÏ °æ¿ì ÀÌ°÷À¸·Î ÁøÀÔÇÏÁö¸¸ break¹®ÀÌ ¾øÀ¸¹Ç·Î ¾Æ·¡ÀÇ
case ''c'': printf(ch´Â b ȤÀº cÀÔ´Ï´Ù¡°);
default : printf(ch´Â ±×¹ÛÀÇ ¹®ÀÚÀÔ´Ï´Ù¡°);
break;
}
for ¹®
óÀ½ ÃʱⰪÀ» ¼³Á¤ÇÑ ´ÙÀ½ Á¶°ÇÀÌ ÂüÀÎ µ¿¾È º¯ÈÄ¡¸¦ ¼öÇàÇÏ¸é¼ ¹®ÀåÀ» ½ÇÇàÇÑ´Ù
/* i=0À¸·Î ÃʱⰪÀ» ¼³Á¤ÇÑ ÈÄ,// sum=sum+i¸¦ ½ÇÇàÇÑ´Ù. ±×ÈÄ i++ (Áï,i=i+1)¸¦ ó¸®ÇÏ°í,
ºñ±³¹® (i<10)ÀÇ °á°ú°¡ ÂüÀÏ ¶§±îÁö sum=sum+i¿Í i++ 󸮸¦ ¹Ýº¹ÇÑ´Ù*/
sum=0;
for(i=0;i<10;i++) sum=sum+i;
printf(0¿¡¼ 9±îÁöÀÇ ÇÕÀº %d,sum);
while ¹®
Á¶°Ç½ÄÀÌ ÂüÀÏ µ¿¾È while¿¡ µû¸£´Â ¹®ÀåÀ» ½ÇÇàÇÑ´Ù
sum=i=0; /* sum=0; I=0;°ú °°´Ù. */
while(i<10) /* i°¡ 10º¸´Ù ÀÛÀº °æ¿ì ¼öÇàÇÑ´Ù */
{
sum=sum+i;
i++; /* i=i+1°ú °°´Ù */
}
printf(0¿¡¼ 9±îÁöÀÇ ÇÕÀº %d, sum);
do{ ¹®Àå }while( Á¶°Ç¹® );
¿ì¼± do³»ºÎÀÇ ¹®ÀåÀ» ½ÇÇàÇÑ ÈÄ while ´ÙÀ½ÀÇ Á¶°Ç¹®ÀÌ ÂüÀÎ µ¿¾È do ¹®ÀåÀ» ½ÇÇàÇÑ´Ù. ÃÖ¼Ò 1¹øÀº ½ÇÇàÇÏ´Â while¹®À̶ó°í º¼ ¼ö ÀÖ´Ù.
sum=i=0; /* sum=0; i=0;À» ÀÌ·¸°Ô ¾µ ¼ö ÀÖ´Ù */
do
printf(0¿¡¼ 9±îÁöÀÇ ÇÕÀº %d, sum);¡¡
C¾ð¾î¿¡¼ÀÇ ÇÔ¼ö´Â ¼öÇп¡¼ À̾߱âÇÏ´Â ÇÔ¼ö¿Í´Â ´Ù¸¥ Àǹ̸¦ °¡Áö°í ÀÖ´Ù. C¾ð¾îÀÇ ÇÔ¼ö´Â ƯÁ¤ÇÑ ÀÛ¾÷À» ¼öÇàÇϵµ·Ï ¼³°èµÈ µ¶¸³ÀûÀÎ ÇÁ·Î±×·¥À» ¸»ÇÏ´Â °ÍÀÌ´Ï ´Ù¸¥ ¾ð¾îÀÇ ¼ºê·çƾ°ú °°Àº µ¿ÀÛÀ» ÇÑ´Ù°í º¸¸é µÈ´Ù. ÇÁ·Î±×·¥¿¡¼ ƯÁ¤ÀÛ¾÷À» ¹Ýº¹Çؼ ¼öÇàÇØ¾ß ÇÒ °æ¿ì, ±× ÀÛ¾÷¿¡ ÇØ´çµÇ´Â ÀûÀýÇÑ ÇÔ¼ö¸¦ ¸¸µé¾î¼ ÇÊ¿äÇÒ ¶§¸¶´Ù È£ÃâÇϸé ÇÁ·Î±×·¥À» °£°áÇϸ鼵µ ÀÌÇØÇϱ⠽±°Ô ±¸¼ºÇÒ ¼ö ÀÖ´Ù.
C¾ð¾î¿¡¼´Â ¸ðµç ÇÁ·Î±×·¥ÀÌ °®´Â 3°¡Áö ±¸¼ºÀÎ ÀÔ·Â, ó¸®, Ãâ·Â ºÎºÐ Áß¿¡¼ ÀԷ°ú Ãâ·ÂºÎºÐÀº °ú°¨È÷ »èÁ¦ÇÏ°í ¿À·ÎÁö 󸮺κи¸À¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ÀԷ°ú Ãâ·ÂÀÌ ÇÊ¿äÇÏÁö ¾Ê´Â ÇÁ·Î±×·¥Àº °ÅÀÇ ¾øÀ¸¹Ç·Î, C¾ð¾î º»Ã¼¸¸À¸·Î ¿øÇÏ´Â ÀÏÀ» ÀÛ¼ºÇϱâ´Â Èûµé°Ô µÈ´Ù. µû¶ó¼ ÀԷ°ú Ãâ·ÂºÎºÐ¿¡ ÇØ´çµÇ´Â ÇÔ¼öºÎÅÍ Á¦ÀÛÇØ¾ß ÇÑ´Ù.
»ç½Ç 󸮺κÐÀ» Á¦¿ÜÇÑ ¸ðµç ºÎºÐÀ» »ç¿ëÀÚ°¡ ÁغñÇÑ´Ù´Â °ÍÀº Áö±ØÈ÷ ¾î·Á¿î ÀÏÀÌÁö¸¸ ÄÄÆÄÀÏ·¯ Á¦Á¶È¸»ç¿¡¼ Ç¥ÁØÀûÀÎ ·±Å¸ÀÓ ¶óÀ̺귯¸®¸¦ ÁغñÇÏ¿© ÀÔÃâ·Â ºÎºÐÀº ¹°·Ð ´Ù¾çÇÑ Ã³¸®ÇÔ¼ö±îÁö ÁغñÇÏ°í ÀÖ´Ù. »ç¿ëÀÚ´Â ÀÌ·± ¶óÀ̺귯¸®¸¦ ÀûÀýÈ÷ È°¿ëÇÏ¿© ÀÚ½ÅÀÇ ¿ëµµ¿¡ ¸Â´Â ÇÔ¼ö¸¦ Á¦ÀÛÇÏ¸é µÈ´Ù.
·±Å¸ÀÓ ¶óÀ̺귯¸®
·±Å¸ÀÓ ¶óÀ̺귯¸®´Â ±×°ÍÀÌ ¼±¾ðµÈ Çì´õÆÄÀϸ¸ ¼Ò½ºÄڵ忡 Æ÷ÇÔ½ÃÅ°¸é °£´ÜÈ÷ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ÀÚÁÖ »ç¿ëÇÏ´Â Ãâ·ÂÇÔ¼öÀÎ printf()´Â ±×°ÍÀÌ ¼±¾ðµÈ stdio.h ÆÄÀϸ¸ Æ÷ÇÔ½ÃÅ°¸é ±× ±â´ÉÀ» ¸¾²¯ È°¿ëÇÒ ¼ö ÀÖ´Ù. ·±Å¸ÀÓ ¶óÀ̺귯¸®ÀÇ ÀÚ¼¼ÇÑ ³»¿ëÀº Åͺ¸-C °ü·Ã¼ÀûÀ» Âü°íÇϱ⠹ٶõ´Ù.
#include <stdio.h> /* printf(), scanf() µîÀÇ ÇÔ¼ö°¡ ¼±¾ðµÇ¾î ÀÖ´Ù.*/
int main(void)
»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö
·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡ Æ÷ÇÔµÈ ÇÔ¼ö¸¸À¸·Î ¿øÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱâ´Â ¾î·Á¿ì¹Ç·Î ÀÚ½ÅÀÇ ¿ëµµ¿¡ ¾Ë¸ÂÀº ÇÔ¼ö´Â ½º½º·Î ÀÛ¼ºÇϰųª ´Ù¸¥ »ç¶÷ÀÌ ÀÛ¼ºÇÑ ÇÔ¼ö¸¦ ÂüÁ¶ÇÏ¿© ÀÚ½ÅÀÇ ¿ëµµ¿¡ ¸Â°Ô ÀÀ¿ëÇØ¾ß ÇÑ´Ù. ´ÙÀ½Àº 1¿¡¼ n±îÁöÀÇ Á¤¼ö¸¦ ´õÇØÁÖ´Â summing()ÇÔ¼ö¸¦ ÀÛ¼ºÇÑ ¿¹ÀÌ´Ù.
/* 1¿¡¼ n±îÁöÀÇ Á¤¼ö¸¦ ´õÇÏ¿© ±× °á°ú¸¦ µÇµ¹·Á ÁÖ´Â ÇÔ¼ö */
int summing(int n)
{ /*ÇÔ¼ö ºí·Ï ½ÃÀÛ ¡°{¡±·Î ½ÃÀÛÇÑ´Ù*/
int i,sum=0; /* ³»ºÎº¯¼ö ¼±¾ð, sumÀº ¼±¾ðµÇ¸é¼ 0À¸·Î Ãʱâȵȴ٠*/
for(i=1;i<=n;i++) sum=sum+i;
return(sum); /* °á°ú °ª Àü´Þ */
} /* ÇÔ¼ö ³¡ ¡°}¡±·Î ³¡³´Ù */
int main(void) /* ¸Å°³º¯¼ö°¡ ¾ø´Â ÇÔ¼ö´Â void ÀÎÀÚÇüÀ¸·Î ¼±¾ðÇÑ´Ù */
¼±Çà󸮱â¶õ ÇÁ·Î±×·¥ÀÌ ÄÄÆÄÀÏ µÇ±â Àü¿¡ 󸮵Ǵ ¸í·É¾î¸¦ ¸»ÇÑ´Ù. ¿©·¯°¡Áö°¡ ÀÖÁö¸¸ ÁÖ·Î »ç¿ëµÇ´Â °ÍÀº #include¿Í #define µÎ °¡ÁöÀÌ´Ù
#define
º¸Åë ¸ÅÅ©·Î(macro)¶ó ¸»ÇÑ´Ù. ¸ÅÅ©·Î¶õ ÀÏ·ÃÀÇ ¹®ÀÚ, »ó¼ö, ¼ö½ÄÀ» ÇϳªÀÇ ½Äº°ÀÚ(¹®ÀÚ¿)·Î Ç¥½ÃÇÏ´Â °ÍÀ¸·Î, Á¤ÀÇµÈ ÈÄ ½Äº°ÀÚ¸¸ ±â¼úÇϸé ÄÄÆÄÀÏ °úÁ¤¿¡¼ ÁöÁ¤ÇÑ ¼ö³ª ¼ö½ÄÀ¸·Î Àü°³µÈ´Ù. ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇϸé ÀǹÌÀü´ÞÀÌ ¾î·Á¿î ¼ýÀÚ³ª ¼ö½ÄÀ» ÀÌÇØÇϱ⠽¬¿î ¹®ÀڷΠǥ±âÇÒ ¼ö ÀÖÀ¸¹Ç·Î Æí¸®ÇÏ´Ù. #define ´ÙÀ½¿¡ º¯¼öÀÇ ±ÔÁ¤¿¡ ¸Â´Â ¹®ÀÚ¿À» »ç¿ëÇÏ°í ´ëüÇÒ ¹®ÀÚ³ª ¼ýÀÚ¸¦ ±â¼úÇÑ´Ù. ¸ÅÅ©·Î Á¤ÀÇ ´ÙÀ½¿¡´Â ; À» »ç¿ëÇÏÁö ¾Ê´Â´Ù.
#define PI 3.14 /* 3.14´ë½Å PI¸¦ »ç¿ëÇÑ´Ù */
#define LCD_ON 0xF7
#define LCD_addr 0x100 /* 0x100¸¦ LCD_addr·Î Ç¥±âÇÑ´Ù */
#define outLCD(data) outportb(LCD_addr,data)
unsigned char Pdata;
float angle;
Pdata = LCD_ON;
outLCD(Pdata); /* outportb(0x100,0xF7); */
angle = 2.*PI;
#include
ÇöÀçÀÇ ÀÚ¸®¿¡ ´Ù¸¥ ÆÄÀÏÀ» Æ÷ÇÔÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. #include ´ÙÀ½¿¡ Æ÷ÇÔÇÏ°íÀÚ ÇÏ´Â ÆÄÀÏÀ̸§À» Àû´Â´Ù. ÆÄÀÏÀ̸§À» °¨½Î´Â µ¥´Â < >¿Í ¡° ¡±¸¦ »ç¿ëÇϴµ¥, ÀÌ µÑÀº ¾à°£ ´Ù¸¥ Àǹ̸¦ °¡Áø´Ù. < >ºÎÈ£´Â Ç¥ÁØ ½Ã½ºÅÛ µð·ºÅ丮¿¡¼ ÆÄÀÏÀ» ã°í, ºÎÈ£´Â ±× ÆÄÀÏÀÌ ÀÖ´Â µð·ºÅ丮¿¡¼ ÆÄÀÏÀ» Ž»öÇÑ´Ù. º¸Åë ³»Àå ÇÔ¼öµéÀÌ ¼±¾ðµÈ ½Ã½ºÅÛ¿¡¼ Á¦°øÇÏ´Â Çì´õ ÆÄÀϵéÀº < >·Î Æ÷ÇÔ½ÃÅ°°í, »ç¿ëÀÚ°¡ ÀÚüÀûÀ¸·Î Á¦ÀÛÇÑ Çì´õÆÄÀÏÀº ·Î Æ÷ÇÔÀ» ½ÃŲ´Ù.
#include <stdio.h> /* ½Ã½ºÅÛ µð·ºÅ丮¿¡¼ stdio.h ÆÄÀÏÀ» Àоî Æ÷ÇÔ½ÃŲ´Ù */
#include head.h /* ÇöÀçÀÇ µð·ºÅ丮¿¡¼ head.h ÆÄÀÏÀ» Àоî Æ÷ÇÔ½ÃŲ´Ù */
#include c:\mydir\head.h /* c:\mydir µð·ºÅ丮¿¡¼ head.h ÆÄÀÏÀ» Àоî Æ÷ÇÔ½ÃŲ´Ù*/
typedef
typedef¹®Àº ÇÁ·Î±×·¡¸Ó ÀڽŸ¸ÀÇ ÀÚ·áÇüÀ» ¸¸µé¾î ÁØ´Ù. #define°ú ±â´ÉÀÌ ºñ½ÁÇÏÁö¸¸, ¿ÜÇüÀûÀ¸·Î typedef´Â ÀÚ·áÇüÀÇ º¯È¯¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. typedef´Â ÀÚÁÖ »ç¿ëµÇ´Â ÀÚ·áÇüÀ» ¾Ë±â ½±°Ô Ç¥ÇöÇÏ°Ô ÇÏ°í, ´Ù¸¥ ±â°è¿¡ ÇÁ·Î±×·¥ÀÇ À̽ÄÀ» ½±°Ô Çϵµ·Ï µµ¿ÍÁØ´Ù. typedef ´ÙÀ½ ¿ø·¡ÀÇ ÀÚ·áÇü°ú ¹Ù²Ù°íÀÚÇÏ´Â ÀÚ·áÇüÀ» ±â¼úÇÏ¿© »ç¿ëÇÑ´Ù. #define°ú ´Þ¸® #À¸·Î ½ÃÀÛÇÏÁö ¾Ê°í, ³¡ºÎºÐ¿¡ ;¸¦ »ç¿ëÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇÑ´Ù.
typedef unsigned char BYTE; /* unsigned charÇüÀ» BYTE·Î ¹Ù²Û´Ù */
BYTE MSB; /* unsigned char MSB; ¿Í µ¿ÀÏÇÑ Àǹ̸¦ °®´Â´Ù */
C¾ð¾î¿¡¼ struct(±¸Á¶Ã¼)¿Í union(°ø¿ëü) Å°¿öµå¸¦ ÀÌ¿ëÇÏ¿© ´Ù¼¸°¡Áö ±âº» µ¥ÀÌŸ ŸÀÔ(char, int, float, double, void)ÀÌ Á¶ÇÕµÈ »õ·Î¿î µ¥ÀÌŸ ŸÀÔÀ» ¸¸µé ¼ö ÀÖ´Ù. struct´Â ÇϳªÀÇ º¯¼ö¸íÀÌ ±â¾ïÀå¼Ò°¡ ´Ù¸¥ ¿©·¯ °³ÀÇ º¯¼öÁýÇÕÀ» ´ë½ÅÇØÁÖ¸ç, unionÀº 2°³ ÀÌ»óÀÇ º¯¼ö°¡ µ¿ÀÏÇÑ ±â¾ïÀå¼Ò(¸Þ¸ð¸®)¸¦ °øÀ¯ÇÏ°Ô ÇÑ´Ù.
struct
struct´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÑ´Ù
struct ±¸Á¶Ã¼¸í{
Ç׸ñ1;
Ç׸ñ2;
:
}±¸Á¶Ã¼º¯¼ö¸í;
¾Õ¼ Á¤ÀÇµÈ ±¸Á¶Ã¼ÇüÀÇ »õ·Î¿î ±¸Á¶Ã¼º¯¼ö´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÑ´Ù.
struct ±¸Á¶Ã¼¸í ±¸Á¶Ã¼º¯¼ö¸í;
±¸Á¶Ã¼º¯¼ö¸í ¹Ù·ÎµÚ¿¡ ''.''À» ÷°¡ÇÑ ÈÄ Ç׸ñ¸íÀ» ¿¬ÀÌ¾î ±â·ÏÇÏ¸é ¿ÜºÎ¿¡¼ Á¢±ÙÇÒ ¼ö ÀÖ´Â º¯¼ö¸íÀÌ µÈ´Ù. À̶§ »ç¿ëÇÏ´Â ''.''À» Ç׸ñ¿¬»êÀÚ(membership operator)¶ó°í ÇÑ´Ù. ±¸Á¶Ã¼Çü Æ÷ÀÎÅͺ¯¼ö´Â ''->''¶ó´Â ±âÈ£·Î Ç׸ñÀ» Ç¥½ÃÇÑ´Ù.
struct SPOINT{
int x; /* 2¹ÙÀÌÆ® Å©±âÀÇ Ç׸ñ */
char y; /* 1¹ÙÀÌÆ® Å©±âÀÇ Ç׸ñ */
}sp1; /* x,y¶ó´Â 2°³ÀÇ µ¥ÀÌŸŸÀÔÀ¸·Î ±¸¼ºµÈ SPOINT¶ó´Â struct (±¸Á¶Ã¼) ¿Í ±× ±¸Á¶Ã¼¸¦ »ç¿ëÇÑ º¯¼ö sp1À» ¼±¾ðÇÑ´Ù. ¿©±â¼ x,y´Â ¸ðµÎ ´Ù¸¥ ¸Þ¸ð¸®¹øÁö¸¦ °¡Áö°Ô µÈ´Ù. SPOINT ±¸Á¶Ã¼ÀÇ Å©±â´Â 2¹ÙÀÌÆ® (x)+1¹ÙÀÌÆ®(y)=3¹ÙÀÌÆ®°¡ µÈ´Ù. */
struct SPOINT sp2; /* ¾Õ¼ Á¤ÀÇÇÑ SPOINT¶ó´Â ±¸Á¶Ã¼Çü º¯¼ö sp2¸¦ ¼±¾ðÇÑ´Ù*/
sp1.x = 10; /* sp1 ±¸Á¶Ã¼º¯¼öÀÇ xÇ׸ñ¿¡ 10À» ´ëÀÔÇÑ´Ù. sp1.y¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù. */
sp2.y = 20; /* sp2 ±¸Á¶Ã¼º¯¼öÀÇ yÇ׸ñ¿¡ 20À» ´ëÀÔÇÑ´Ù. sp2.x¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù.*/
union
union(°ø¿ëü)´Â struct(±¸Á¶Ã¼)¿Í ºñ½ÁÇÏ°Ô Á¤ÀÇÇÑ´Ù.
union °ø¿ëü¸í{
}°ø¿ëü¸í;
¾Õ¼ Á¤ÀÇµÈ °ø¿ëüÇüÀÇ »õ·Î¿î °ø¿ëüº¯¼ö´Â ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÑ´Ù.
°ø¿ëü Ç׸ñÀ» Áö½ÃÇϱâ À§Çؼ´Â °ø¿ëüº¯¼ö¸í ¹Ù·ÎµÚ¿¡ ¡®.¡¯À» ÷°¡ÇÑ ÈÄ Ç׸ñ¸íÀ» ¿¬ÀÌ¾î ±â·ÏÇÏ¸é µÈ´Ù.
union UPOINT{
int x; /* 2¹ÙÀÌÆ® Å©±âÀÇ Ç׸ñ */
char y; /* 1¹ÙÀÌÆ® Å©±âÀÇ Ç׸ñ */
}up1; /* x,y¶ó´Â 2°³ÀÇ µ¥ÀÌŸŸÀÔÀ¸·Î ±¸¼ºµÈ UPOINT¶ó´Â union (°ø¿ëü)¿Í ±× °ø¿ëü¸¦ »ç¿ëÇÑ º¯¼ö up1À» ¼±¾ðÇÑ´Ù. ¿©±â¼ x,y´Â °°Àº ¸Þ¸ð¸® ¹øÁö¸¦ °¡Áö°Ô µÈ´Ù. µû¶ó¼ up1.x¸¦ º¯È½ÃÅ°¸é up1.y ºÎ
ºÐµµ up1.x°¡ Â÷ÁöÇÏ´Â ¸Þ¸ð¸® °ø°£¸¸Å º¯ÇÏ´Â È¿°ú¸¦ °¡Áø´Ù. UPOINT °ø¿ëüÀÇ Å©±â´Â °¡Àå Å©±â°¡ Å« Ç׸ñÀÇ Å©±â°¡ µÇ¹Ç·Î ÀÌ °æ¿ì 2¹ÙÀÌÆ®(xÀÇ Å©±â)°¡ µÈ´Ù.*/
union UPOINT up2; /* ¾Õ¼ Á¤ÀÇÇÑ UPOINT¶ó´Â °ø¿ëüÇü º¯¼ö up2¸¦ ¼±¾ðÇÑ´Ù*/
up1.x = 0x1234; /* up1 °ø¿ëüº¯¼öÀÇ xÇ׸ñ¿¡ 0x1234¸¦ ´ëÀÔÇÑ´Ù. up1.y´Â
up1.x¿Í °°Àº ¸Þ¸ð¸® ¹øÁö¸¦ °øÀ¯ÇÏ°í, 1¹ÙÀÌÆ®ÀÇ Å©±â
À̹ǷΠup1.xÀÇ ÇÏÀ§ 1¹ÙÀÌÆ®ÀÎ 0x34°¡ µÈ´Ù.*/
up2.y = 0x56; /* up2 °ø¿ëüº¯¼öÀÇ yÇ׸ñ¿¡ 0x34¸¦ ´ëÀÔÇÑ´Ù. up2.x´Â up2.y¿Í µ¿ÀÏÇÑ ¸Þ¸ð¸® ¹øÁö¸¦ °øÀ¯ÇÏ°í, 2¹ÙÀÌÆ®ÀÇ Å©±âÀ̹ǷΠup2.xÀÇ ÇÏÀ§ 1¹ÙÀÌÆ®´Â 0x56ÀÌ µÈ´Ù. up2.xÀÇ »óÀ§ ¹ÙÀÌÆ®´Â ¿ø·¡ÀÇ °ª°ú µ¿ÀÏÇÏ´Ù.*/
¹è¿
¹è¿Àº ¶È°°Àº ÀÚ·áÇüÀ» °®´Â ¿ø¼Ò(º¯¼ö)ÀÇ ÁýÇÕÀ» ¸»ÇÑ´Ù. ¿ø¼ÒÀÇ ¹øÈ£´Â 1¿¡¼ ½ÃÀÛÇÏÁö ¾Ê°í, 0ºÎÅÍ ½ÃÀÛÇÑ´Ù. C ÄÄÆÄÀÏ·¯´Â ¹è¿ÀÇ Å©±â¸¦ °Ë»çÇÏÁö ¾ÊÀ¸¹Ç·Î, ¹è¿ÀÇ Å©±â ÀÌ»óÀÇ µ¥ÀÌŸ¿¡ Á¢±ÙÇÏ¸é ¿¹±âÄ¡ ¾ÊÀº ¿¡·¯°¡ ¹ß»ýÇϹǷΠÁÖÀÇÇØ¾ß ÇÑ´Ù.
int aa[10]; /* aa[0],aa[1],aa[2]... aa[9] */
float ff[5]; /* ff[0], ff[1],ff[2],ff[3],ff[4] */
aa[9]= 111; /*Á¤»óÀûÀÎ µ¿ÀÛ*/
aa[20]= 123; /* aa[10]ÀÌ»óÀº ¾²±â ±ÝÁö, ¹è¿ aaÀÇ Å©±â´Â 10À̹ǷΠÇã°¡µÈ ¿ø¼Ò¹øÈ£´Â aa[0]ºÎÅÍ aa[9]±îÁö´Ù. ¹è¿ÀÇ Å©±â¸¦ ³Ñ¾î¼± aa[20]¿¡´Â ´Ù¸¥ µ¥ÀÌŸ ȤÀº ½ÇÇàÄڵ尡 ¾²¿©ÀÖÀ» ¼öµµ ÀÖÀ¸¹Ç·Î µ¿À۽à ¿¹±âÄ¡ ¾Ê´Â ¿¡·¯°¡ ¹ß»ýÇÑ´Ù*/
Æ÷ÀÎÅÍ
ÀϹÝÀûÀÎ º¯¼ö¸¦ ´Ù·ê ¶§, »ç¿ëÀÚ´Â º¯¼öÀÇ ³»¿ë¿¡¸¸ °ü½ÉÀ» °¡Áö¸é µÇ°í, ±× º¯¼ö°¡ Â÷ÁöÇÏ´Â ¸Þ¸ð¸®ÀÇ ¹øÁö¸¦ ÀǽÄÇÒ ÇÊ¿ä´Â ¾ø´Ù. C¾ð¾î¿¡¼ º¯¼ö°¡ Á¤ÀÇµÇ¸é ±× º¯¼ö¿¡ ÀÐ°í ¾²¿©Áö´Â µ¥ÀÌŸ¸¦ º¸Á¸Çϱâ À§ÇØ ¸Þ¸ð¸®ÀÇ Æ¯Á¤¹øÁö¿¡ º¯¼ö°¡ À§Ä¡ÇÏ°Ô µÈ´Ù. ¿¡·¯ ¾øÀÌ ÀÛ¼ºµÈ ÇÁ·Î±×·¥¿¡ ´ëÇØ ÄÄÆÄÀÏ·¯´Â º¯¼ö³ª ½ÇÇàÄÚµå¿Í Ãæµ¹ÇÏÁö ¾Êµµ·Ï ÀûÀýÇÑ ¸Þ¸ð¸® ¹øÁö¿¡ º¯¼ö¸¦ ÇÒ´çÇϹǷΠ»ç¿ëÀÚ´Â º¯¼ö°¡ À§Ä¡ÇÑ ¸Þ¸ð¸®ÀÇ À§Ä¡¿¡ °ü½ÉÀ» °¡ÁöÁö ¾Ê¾Æµµ µÈ´Ù.
¸¶ÀÌÅ©·ÎÇÁ·Î¼¼¼¸¦ ÀÌ¿ëÇÑ ³»ÀåÇüÁ¦¾î±â(Embedded Controller)´Â ºñ±³Àû ÀûÀº ¾çÀÇ ¸Þ¸ð¸® À§¿¡ ½ÇÇà ÄÚµå¿Í µ¥ÀÌŸ¸¦ ´ã°Ô µÇ¹Ç·Î dzºÎÇÑ ¸Þ¸ð¸®¸¦ °®´Â IBM-PC ȯ°æ¿¡ ºñÇØ º¯¼ö¿Í ¸Þ¸ð¸®ÀÇ °ü°è¿¡ ´ëÇØ ¼¶¼¼ÇÑ Á¢±ÙÀÌ ÇÊ¿äÇÏ´Ù.
ÀϹݺ¯¼ö´Â Á¶ÀÛÇÒ ´ë»óÀÌ º¯¼öÀÇ °ªÀÎ ¹Ý¸é, Æ÷ÀÎÅÍ´Â ´Ù·ç´Â ´ë»óÀÌ ¸Þ¸ð¸® ¹øÁö¶ó´Â Á¡ÀÌ Æ¯ÀÌÇÏ´Ù. Æ÷ÀÎÅÍ °ü·Ã ¿¬»êÀÚ´Â *°ú &°¡ ÀÖ´Ù. *´Â Æ÷ÀÎÅͺ¯¼ö¸¦ ¼±¾ðÇϰųª Æ÷ÀÎÅͺ¯¼öÀÇ ³»¿ë¿¡ Á¢±ÙÇÒ ¶§ »ç¿ëÇÏ°í &´Â ÀϹݺ¯¼öÀÇ ¸Þ¸ð¸®¹øÁö¸¦ ¾Ë¾Æ³¾ ¶§ »ç¿ëÇÑ´Ù.
char ch; /* ch´Â ¹®ÀÚÇü º¯¼ö (Å©±â´Â 1¹ÙÀÌÆ®=8ºñÆ®) */
int i; /* i´Â Á¤¼öÇü º¯¼ö (Å©±â´Â 2¹ÙÀÌÆ®=16ºñÆ®) */
int *pch; /* *pch´Â ¹®ÀÚÇü º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ */
int *pi; /* *pi´Â Á¤¼öÇü º¯¼ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ */
.
ch= 0x12; /* ¹®ÀÚÇü º¯¼ö ch¿¡ 1¹ÙÀÌÆ®ÀÇ µ¥ÀÌŸ 0x12¸¦ ±â·ÏÇÑ´Ù */
pch = &ch; /* ¹®ÀÚÇü º¯¼ö chÀÇ ¸Þ¸ð¸® ¹øÁö¸¦ pch¿¡ ´ëÀÔÇÑ´Ù.*/
pch=0x1000; /* pch°¡ ¸Þ¸ð¸® ¹øÁö 0x1000 (16Áø¼ö)¸¦ Áö½ÃÇÏ°Ô ÇÑ´Ù */
ch = *pch; /* pch°¡ Áö½ÃÇÏ´Â ¸Þ¸ð¸®(0x1000¹øÁö)¿¡¼ 1¹ÙÀÌÆ®(8ºñÆ®)µ¥ÀÌŸ¸¦ ²¨³»¾î ch¿¡ ´ëÀÔÇÑ´Ù. *pch¿¬»ê °á°ú°¡ ¸î ¹ÙÀÌÆ®ÀÇ µ¥ÀÌŸ¸¦ ²¨³¾ °ÍÀΰ¡ ÇÏ´Â °áÁ¤Àº pch¸¦ Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ µ¥ÀÌŸ ŸÀÔ¿¡ ÀÇÇØ °áÁ¤µÈ´Ù. ¾ÕÀÇ pchÁ¤ÀÇ¿¡¼ char *pch; ¿Í °°ÀÌ *pchÀÇ µ¥ÀÌŸ ŸÀÔÀ» char(1¹ÙÀÌÆ®)·Î Á¤ÀÇÇßÀ¸¹Ç·Î *pch¿¡¼ ¾ò¾îÁö´Â µ¥ÀÌŸ´Â 1¹ÙÀÌÆ®°¡ µÈ´Ù. */
i= 0x1234; /* Á¤¼öÇü º¯¼ö¿¡ 2¹ÙÀÌÆ®ÀÇ µ¥ÀÌŸ(0x1234)¸¦ ±â·ÏÇÑ´Ù */
pi= &i; /* pi¿¡ Á¤¼öÇü º¯¼ö iÀÇ ¸Þ¸ð¸® ¹øÁö¸¦ ³Ö´Â´Ù */
pi=0x2000; /* pi°¡ ¸Þ¸ð¸® ¹øÁö 0x1000 (16Áø¼ö)¸¦ Áö½ÃÇÏ°Ô ÇÑ´Ù */
i = *pi; /* pi°¡ Áö½ÃÇÏ´Â ¸Þ¸ð¸®(0x1000¹øÁö)¿¡¼ 2¹ÙÀÌÆ®(16ºñÆ®)µ¥ÀÌŸ¸¦ ²¨³»¾î i¿¡ ´ëÀÔÇÑ´Ù. *pi ¿¬»ê °á°ú°¡ ¸î ¹ÙÀÌÆ®ÀÇ µ¥ÀÌŸ¸¦ ²¨³¾ °ÍÀΰ¡ ÇÏ´Â °áÁ¤Àº pi¸¦ Á¤ÀÇÇÒ ¶§ »ç¿ëÇÑ µ¥ÀÌŸ ŸÀÔ¿¡ ÀÇÇØ °áÁ¤µÈ´Ù. ¾ÕÀÇ piÁ¤ÀÇ¿¡¼ int *pi; ¿Í °°ÀÌ *pi µ¥ÀÌŸ ŸÀÔÀ» int(2¹ÙÀÌÆ®)·Î Á¤ÀÇÇßÀ¸¹Ç·Î *pi ¿¬»êÀ¸·Î ¾ò¾îÁö´Â µ¥ÀÌŸ´Â 2¹ÙÀÌÆ®°¡ µÈ´Ù. */
Æ÷ÀÎÅÍ´Â ¸Þ¸ð¸®ÀÇ ¾îµå·¹½º ¹ö½º¶ó »ý°¢ÇÒ ¼ö ÀÖ´Ù. Æ÷ÀÎÅÍ ¿¬»êÀÚ (*)´Â Æ÷ÀÎÅÍ°¡ Áö½ÃÇÏ´Â ¾îµå·¹½º ¹øÁö¿¡ ÇØ´çµÇ´Â µ¥ÀÌŸ °ªÀ» ¾ò´Â ±â´ÉÀ̶ó »ý°¢ÇÒ ¼ö ÀÖ´Ù. µ¿ÀÏÇÑ ¾îµå·¹½º¸¦ ÁöÁ¤Çصµ 8ºñÆ® ÆøÀÇ ¸Þ¸ð¸®¿¡¼´Â 8ºñÆ® µ¥ÀÌŸ°¡, 16ºñÆ® ÆøÀÇ ¾îµå·¹½º¿¡¼´Â 16ºñÆ® µ¥ÀÌŸ¸¦ ¾òÀ» ¼ö ÀÖµíÀÌ, ¹®ÀÚÇü Æ÷ÀÎÅÍ (char *pch)¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¿¬»ê (*pch)ÀÇ °á°ú´Â 8ºñÆ®(1¹ÙÀÌÆ®)°ªÀÌ Ãâ·ÂµÇ°í, Á¤¼öÇü Æ÷ÀÎÅÍ( int *pi)¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¿¬»ê (*pi)ÀÇ °á°ú´Â 16ºñÆ®(2¹ÙÀÌÆ®) °ªÀÌ Ãâ·ÂµÈ´Ù.
Åͺ¸-CÀÇ near ¿Í far Æ÷ÀÎÅÍ
V25, 386EX´Â 8086°ú ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î ȣȯµÇ´Â ĨÀ̹ǷΠ¸Þ¸ð¸®¸¦ 80x86°ú ¸¶Âù°¡Áö·Î ¼¼±×¸ÕÆ®(16ºñÆ®):¿É¼Â(16ºñÆ®)ÀÇ ÇüÅ·Π´Ù·ç°Ô µÈ´Ù. ¼¼±×¸ÕÆ®¿Í ¿É¼ÂÀÇ °ªÀ» ÀÚÀ¯·Ó°Ô ¹Ù²ã °¡¸é¼ Á¢±ÙÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸® °ø°£Àº ÃÑ 1¸Þ°¡ ¹ÙÀÌÆ®ÀÌ°í, ¼¼±×¸ÕÆ®°¡ Á¤ÇØÁ® ÀÖÀ» ¶§ ¿É¼ÂÀÇ °ª¸¸ º¯È½ÃÄÑ°¡¸é¼ ´Ù·ê ¼ö ÀÖ´Â ¸Þ¸ð¸® °ø°£Àº 64K ¹ÙÀÌÆ®°¡ µÈ´Ù.
Åͺ¸-C¸¦ ½º¸ô¸ðµ¨(small model)·Î ÄÄÆÄÀÏ ÇßÀ» ¶§, µ¥ÀÌŸÀÇ ¹øÁö´Â DS(µ¥ÀÌŸ ¼¼±×¸ÕÆ®)¸¦ ±âÁØÀ¸·Î ¿É¼Â¸¸ º¯ÈÇÏ°Ô µÇ¾î 64K ¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸® °ø°£¿¡ ÇÒ´çµÈ´Ù. DSÀÇ °ªÀº ÇÁ·Î±×·¥À» ¸Þ¸ð¸®¿¡ À̽ÄÇÒ ¶§ °áÁ¤ÇÑ´Ù. ½º¸ô¸ðµ¨¿¡¼µµ DSÀÇ °ª¿¡ ÀÇÁ¸ÇÏÁö ¾Ê°í 1¸Þ°¡ ¹ÙÀÌÆ® ¸Þ¸ð¸® Àüü ¿µ¿ªÀ» ´Ù·ï¾ß ÇÒ ¶§°¡ ÀÖ´Ù. ÀÌ¿Í °°ÀÌ 64K ȤÀº 1¸Þ°¡ ¹ÙÀÌÆ®ÀÇ ¸Þ¸ð¸®¸¦ ´Ù·ê ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ Åͺ¸-C¿¡¼´Â Æ÷ÀÎÅÍ ÇüÀ» Á¤ÀÇÇÏ´Â Å°¿öµå·Î near¿Í far¸¦ ÁغñÇÏ°í ÀÖ´Ù.
near Æ÷ÀÎÅÍ´Â 64KB¿ë, far Æ÷ÀÎÅÍ´Â 1¸Þ°¡ ¹ÙÀÌÆ® ¿ëÀ¸·Î ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù.
int far *fip; /* fip´Â 1¸Þ°¡ ¹ÙÀÌÆ® ¸Þ¸ð¸® ¿µ¿ª¿ë(far) Æ÷ÀÎÅÍ */
int near *nip; /* nip´Â 64KB ¸Þ¸ð¸® ¿µ¿ª¿ë(near) Æ÷ÀÎÅÍ */¡¡
Åͺ¸-C ½º¸ô¸ðµ¨¿¡¼´Â ÄÚµå¿Í µ¥ÀÌŸÀÇ ±âº»ÇüÀ» ¸ðµÎ nearÇüÀ¸·Î °¡Á¤Çϱ⠶§¹®¿¡, ½º¸ô¸ðµ¨¿¡¼ 64KBÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» ´Ù·ê ¶§ near¶ó´Â Å°¿öµå´Â »ç¿ëÇÏÁö ¾Ê¾Æµµ ¹«¹æÇÏ´Ù. farÇü Æ÷ÀÎÅÍ¿¡ ¸Þ¸ð¸®¹øÁö¸¦ ´ëÀÔÇÒ ¶§´Â longÇü Á¤¼ö¸¦ »ç¿ëÇÑ´Ù. longÇü Á¤¼ö(4¹ÙÀÌÆ®)Áß ¾ÕÀÇ 2¹ÙÀÌÆ®´Â ¼¼±×¸ÕÆ®, µÚÂÊÀÇ 2¹ÙÀÌÆ®´Â ¿É¼ÂÀ» ³ªÅ¸³½´Ù.
int i; /* Á¤¼öÇü (2¹ÙÀÌÆ®) º¯¼ö i*/
int far *fip; /* fip´Â 1¸Þ°¡ ¹ÙÀÌÆ® ¸Þ¸ð¸® ¿µ¿ª¿ë(far) Æ÷ÀÎÅÍ */
int near *nip; /* nip´Â 64KB ¸Þ¸ð¸® ¿µ¿ª¿ë(near) Æ÷ÀÎÅÍ, ½º¸ô¸ðµ¨¿¡¼ int *nip¿Í µ¿ÀÏÇÑ ¿ªÇÒÀ» ÇÑ´Ù*/
nip=0x1000; /* nip´Â DS(µ¥ÀÌŸ ¼¼±×¸ÕÆ®)¸¦ ±âÁØÀ¸·Î ÇÑ 0x1000ÀÇ ¿É¼Â¹øÁö(DS:0x1000)¸¦ ³ªÅ¸³½´Ù. => 64KB ¸Þ¸ð¸® ¿µ¿ª*/
fip=0x20001234L; /*fip´Â 2¹ÙÀÌÆ® ¼¼±×¸ÕÆ®(0x2000)¿Í 2¹ÙÀÌÆ® ¿É¼Â(0x1234)ÀÇ ¸Þ¸ð¸® ¹øÁö(0x2000:0x1234)¸¦ ³ªÅ¸³½´Ù=>1¸Þ°¡ ¹ÙÀÌÆ® ¸Þ¸ð¸® ¿µ¿ª*/
*nip=0x5555; /* nipÀÇ ¸Þ¸ð¸® ¹øÁö( DS:0x1000 ¹øÁö)¿¡ 0x5555ÀÇ µ¥ÀÌŸ¸¦ ±â·ÏÇÑ´Ù*/
i = *nip; /* nipÀÇ ¸Þ¸ð¸® ¹øÁö(DS:0x1000 ¹øÁö)ÀÇ ³»¿ë(=0x5555)¸¦ i¿¡ ´ëÀÔÇÑ´Ù*/
*fip=i; /* iÀÇ ³»¿ë(=0x5555)¸¦ fipÀÇ ¸Þ¸ð¸® ¹øÁö(0x2000:0x1234)¿¡ ±â·ÏÇÑ´Ù*/
¹è¿°ú Æ÷ÀÎÅÍÀÇ °ü°è
¹è¿(array)ÀÇ À̸§Àº ù¹ø° ¿ø¼ÒÀÇ ÁÖ¼Ò¸¦ ³ªÅ¸³½´Ù.
·Î Á¤ÀÇÇßÀ» ¶§, &aa[0] (Áï aa[0]ÀÇ ¸Þ¸ð¸® ¹øÁö)¿Í aa´Â °°Àº °ªÀÌ µÈ´Ù.
int i;
int *pi;
int aa[10];
pi=aa; /* pi¿¡ aa¹è¿ ù¹ø° ¿ø¼ÒÀÇ ¸Þ¸ð¸® ¹øÁö¸¦ ´ëÀÔ
ÀÌ°ÍÀº pi=&aa[0]°ú µ¿ÀÏÇÏ´Ù */
*pi=0x1234; /* ÀÌ°ÍÀº aa[0]=0x1234¿Í µ¿ÀÏÇÏ´Ù */
*(pi+1)=0x3456; /* ÀÌ°ÍÀº aa[1]=0x3456°ú µ¿ÀÏÇÏ´Ù */¡¡
Áö¿ªº¯¼ö´Â ±×°ÍÀ» ¼±¾ðÇÑ ÇÔ¼ö ³»ºÎ¿¡¼¸¸ ÀνĵǴ º¯¼öÀÌ´Ù. ÀÌ¿Í ´ëÁ¶ÀûÀ¸·Î Àü¿ªº¯¼ö´Â ÇÔ¼ö¿ÜºÎ¿¡¼ ¼±¾ðµÈ º¯¼ö·Î ±×°ÍÀ» ¼±¾ðÇÏÁö ¾ÊÀº ÇÔ¼ö ³»ºÎ¿¡¼µµ ÀνĵǴ º¯¼ö¸¦ ¸»ÇÑ´Ù. ¸¸¾à ¾î¶² ÇÔ¼ö¿¡¼ Àü¿ªº¯¼ö¿Í °°Àº À̸§À¸·Î Áö¿ªº¯¼ö¸¦ ¼±¾ðÇÒ °æ¿ì ±× ÇÔ¼ö ³»¿¡¼´Â Áö¿ªº¯¼ö°¡ ¿ì¼±ÇÑ´Ù. Áï Àü¿ªº¯¼ö¿Í Áö¿ªº¯¼öÀÇ À̸§ÀÌ °°Àº °æ¿ì Àü¿ªº¯¼ö´Â ¹«½ÃµÇ°í Áö¿ªº¯¼ö¸¸ÀÌ ¿µÇâÀ» ¹ßÈÖÇÑ´Ù. Àü¿ªº¯¼ö´Â °íÁ¤ÀûÀÎ ¸Þ¸ð¸®·Î ÇÒ´ç¹ÞÁö¸¸, Áö¿ªº¯¼ö´Â ½ºÅÿ¡ Æ÷ÇԵǾî ÇÔ¼ö°¡ ºÒ¸± ¶§¿¡ ÇÒ´çµÇ°í, ÇÔ¼ö¸¦ ³¡³¾ ¶§ »ç¶óÁø´Ù
int global;/*Àü¿ªº¯¼ö. ¸ðµç ÇÔ¼ö¿¡¼ ÀνĵȴÙ*/
int test1(void)
{
int local; /*ÇÔ¼ö ³»ºÎ¿¡¼ ¼±¾ðÇÏ¿´À¸¹Ç·Î Áö¿ªº¯¼ö, Áö¿ªº¯¼ö´Â ÀÌ ÇÔ¼ö
³»ºÎ¿¡¼¸¸ ÀνĵȴÙ.*/
local = 1;
global=2; /*Àü¿ªº¯¼öÀ̹ǷÎ, ¼±¾ðÇÏÁö ¾ÊÀº ÇÔ¼ö ³»ºÎ¿¡¼µµ ÀνĵȴÙ.*/
}
int test2(void)
{
int local; /* Áö¿ªº¯¼ö. ÀÌ Áö¿ªº¯¼ö´Â ÇÔ¼ö test1()ÀÇ Áö¿ªº¯¼öÀÎ local°ú´Â
¾Æ¹«·± °ü°è°¡ ¾ø´Ù*/
int global; /*ÇÔ¼ö ³»ºÎ¿¡¼ ¼±¾ðÇÏ¿´À¸¹Ç·Î Áö¿ªº¯¼ö, Àü¿ªº¯¼öÀÎ global°ú
À̸§ÀÌ °°À¸¹Ç·Î Àü¿ªº¯¼ö globalÀº ¹«½ÃµÇ°í, Áö¿ªº¯¼öÀÎ global
¸¸ÀÌ ÀνĵȴÙ.*/
local = 1;
global=2; /*Àü¿ªº¯¼öÀÎ global°ú´Â ¾Æ¹«·± °ü°è°¡ ¾ø°í Áö¿ªº¯¼öÀÎ global·Î
µ¿ÀÛÇÑ´Ù.*/
}
static º¯¼ö
ÇÔ¼ö ³»ºÎ¿¡¼ ¼±¾ðµÈ static º¯¼ö´Â ±× ÇÔ¼ö ¾È¿¡¼¸¸ Àνĵȴٴ Á¡¿¡¼´Â °ÍÀº ÀϹÝÀûÀÎ Áö¿ªº¯¼ö¿Í µ¿ÀÏÇÏ´Ù. ±×·¯³ª ÇÔ¼ö ³»ÀÇ ÀÏ¹Ý Áö¿ªº¯¼ö¿Í´Â ´Þ¸® static º¯¼ö´Â ÀÏÁ¤ÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´ç¹Þ±â ¶§¹®¿¡ ÇÔ¼ö¸¦ Á¾·áÇصµ »ç¶óÁöÁö ¾Ê°í °è¼Ó ±× °ªÀ» À¯ÁöÇÑ´Ù.
void test(void)
{
int local=10; /* Áö¿ªº¯¼ö. ÇÔ¼ö¿¡ ÁøÀÔÇÒ ¶§¸¶´Ù 10À¸·Î Ãʱâȵǰí, ÇÔ¼ö¸¦ Á¾·áÇÏ¸é »ç¶óÁø´Ù */
static int slocal=10; /* staticÇü º¯¼ö, ÇÔ¼ö¸¦ óÀ½ ºÎ¸¦ ¶§¸¸ 10À¸·Î Ãʱâȵǰí ÇÔ¼ö¸¦ Á¾·áÇصµ ±× °ªÀ» °è¼Ó À¯ÁöÇÑ´Ù*/
local++; /* ¿¬»ê°á°ú´Â ¾ðÁ¦³ª 11ÀÌ µÈ´Ù*/
slocal++; /* ¿¬»ê°á°ú´Â ÇÔ¼ö¸¦ ºÎ¸¦ ¶§¸¶´Ù Áõ°¡ÇÑ´Ù */
}
void main(void)
{
test(); /* ÇÔ¼ö¸¦ óÀ½ ºÎ¸¦ ¶§ test()ÇÔ¼öÀÇ slocalÀÇ °ªÀÌ 11·Î Ãʱâȵǰí slocal++ ¿¬»ê°á°ú slocalÀÇ °ªÀº 11°¡ µÈ´Ù*/
test(); /* ´Ù½ÃÇѹø test()ÇÔ¼ö¸¦ ºÎ¸¦ ¶§ slocalÀÇ °ªÀº 11·Î À¯ÁöÇÏ°í ÀÖÀ¸¹Ç·Î slocal++ ¿¬»ê °á°ú slocalÀÇ °ªÀº 12°¡ µÈ´Ù */
}
ÁÖº¯±â±â¸¦ Á¦¾îÇÏ´Ù º¸¸é ¹ÙÀÌÆ® ´ÜÀ§º¸´Ù´Â ºñÆ®´ÜÀ§°¡ Æí¸®ÇÒ ¶§°¡ ¸¹´Ù. ¿¹¸¦ µé¾î ½ºÅܸðÅÍ(STEPPING MOTOR) Á¦¾î¿¡¼ ºñÆ®½ÅÈ£¸¦ ¾î¶»°Ô Á¶ÇÕÇÏ´À³Ä¿¡ µû¶ó ȸÀü¹æÇâÀ̳ª ±¸µ¿¹æ¹ýÀÌ ´Þ¶óÁö°Ô µÈ´Ù. C¾ð¾î¿¡´Â ºñÆ®´ÜÀ§ÀÇ ³í¸®¿¬»ê°ú ºñÆ®´ÜÀ§ Á¦¾î¸¦ À§ÇÑ Áغñ°¡ µÇ¾îÀÖ´Ù.
ºñÆ®´ÜÀ§ ³í¸® ¿¬»êÀÚ
¿¬»êÀÚ |
³»¿ë |
¿¹ |
& |
ºñÆ®´ÜÀ§ ³í¸®°ö(AND) |
y = a&0x0F; /*aÀÇ ÇÏÀ§ 4ºñÆ®¸¸ ¾ò´Â´Ù.*/ |
| |
ºñÆ®´ÜÀ§ ³í¸®ÇÕ(OR) |
y = a|0x0F /*aÀÇ ÇÏÀ§ 4ºñÆ®¸¦ ¸ðµÎ 1·Î ¸¸µç´Ù*/ |
~ |
ºñÆ®´ÜÀ§ ºÎÁ¤(1ÀÇ º¸¼ö) |
y = ~0x00; /*y¸¦ 0xFF·Î ¸¸µç´Ù*/ |
^ |
ºñÆ®´ÜÀ§ ¹èŸÀû OR |
y = a^0xFF; /*aÁß ÇØ´çºñÆ®°¡
1À̸é 0À¸·Î ¸¸µç´Ù*/; |
<< |
¿ìÃøÀ¸·Î À̵¿ |
y = 0x1<<2; /*0x1À» ¿ìÃøÀ¸·Î 2ºñÆ® À̵¿, y=0x4°¡ µÈ´Ù*/ |
>> |
ÁÂÃøÀ¸·Î À̵¿ |
y = 0x2>>1; /*0x2¸¦ ÁÂÃøÀ¸·Î 1ºñÆ® À̵¿,y=0x1ÀÌ µÈ´Ù*/ |
ºñÆ®Çʵå(BIT FIELD)
ºñÆ®Çʵå´Â Á¤¼öÇü º¯¼ö¸¦ ºñÆ® ´ÜÀ§·Î ÂÉ°³¾î °¢ ºñÆ®(¶Ç´Â º¹¼öÀÇ ºñÆ®)¿¡ ÇØ´çÇÏ´Â Çʵ带 Á¦¾îÇϵµ·Ï ¸¸µç º¯¼öÇüÀ¸·Î ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÑ´Ù.
sturct ±¸Á¶Ã¼¸í{
unsigned Çʵå1:ºñÆ®Æø;
unsigned Çʵå2:ºñÆ®Æø;
:
}º¯¼ö¸í;
°¢ Çʵ忡 ´ëÇÑ Á¢±ÙÀº ±¸Á¶Ã¼(struct)¿Í µ¿ÀÏÇÏ°Ô ¡®.¡¯ ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÑ´Ù.
struct BITS{
unsigned B0:1; /*LSB*/
unsigned B1:1;
unsigned B2:1;
unsigned B3:1;
unsigned B4:1;
unsigned B5:1;
unsigned B6:1;
unsigned B7:1; /*MSB*/
}b; /*ÃÑ 8ºñÆ®(1¹ÙÀÌÆ®)ÀÇ ºñÆ®Çʵ带 b¶ó´Â º¯¼ö¿¡ ÇÒ´ç*/
b.B0 = 1; /* bº¯¼öÀÇ Ã¹¹ø° ºñÆ®(LSB)¸¦ 1·Î ¸¸µç´Ù*/
b.B6 = 0; /* bº¯¼öÀÇ 7¹ø° ºñÆ®¸¦ 0À¸·Î ¸¸µç´Ù.*/¡¡
disable() ÇÔ¼ö
80x86 CPUÀÇ Çϵå¿þ¾î ÀÎÅÍ·´Æ®¸¦ ±ÝÁö½ÃŲ´Ù. ÀÌ ÇÔ¼ö´Â ¾î¼Àºí·¯ CLI(clear interrupt)¿Í µ¿ÀÏÇÑ È¿°ú¸¦ ³½´Ù. disable()ÇÔ¼ö´Â 80x86 CPU Äھ°Ô ÀÎÅÍ·´Æ® ±ÝÁö ¸í·ÉÀ» ³»¸®´Â °ÍÀÌ°í, ÁÖº¯ Çϵå¿þ¾î¿¡ Á÷Á¢ÀûÀÎ ¿ªÇÒÀ» ¼öÇàÇÏÁö´Â ¾Ê´Â´Ù. IBM-PC¿¡¼ ÀÎÅÍ·´Æ®¿Í °ü·ÃµÈ Çϵå¿þ¾î ºÎÇ°Àº 80x86 CPU¿Í 8259A PIC(ÇÁ·Î±×·¡¸Óºí ÀÎÅÍ·´Æ® Á¦¾î±â)ÀÌ´Ù.
386EX ÇÁ·Î¼¼¼¿¡´Â 80x86°ú ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î ȣȯµÇ´Â 386SX CPUÄÚ¾î ÀÌ¿Ü¿¡µµ Çϵå¿þ¾î ÀÎÅÍ·´Æ®¸¦ °üÀåÇÏ´Â ÀÎÅÍ·´Æ® Á¦¾î±âÀÎ 8259A°¡ ³»ÀåµÇ¾î ÀÖ´Ù. TB-386EX º¸µå¿¡¼´Â Çϵå¿þ¾î ÀÎÅÍ·´Æ® Á¦¾î±â°¡ IBM-PC/AT¿Í µ¿ÀÏÇÏ°Ô 2°³·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç, Çϳª´Â ¸¶½ºÅÍ 8259A·Î ¶Ç Çϳª´Â ½½·¹À̺ê 8259A·Î ¼³Á¤µÇ¾î ÀÖ´Ù. ¸ðµç Çϵå¿þ¾î ÀÎÅÍ·´Æ®´Â ¸¶½ºÅÍ 8259AÀÇ Ãâ·ÂÇÉÀ» ÅëÇØ CPU ÄÚ¾î(386SX)¿¡ ¿¬°áµÇ´Âµ¥, enable()°ú disable() ÇÔ¼ö´Â ¸¶½ºÅÍ 8259AÀÇ Ãâ·ÂÇÉ°ú CPU ÄÚ¾îÀÇ ¿¬°á ¿©ºÎ¸¦ °áÁ¤ÇÑ´Ù.
8259A ÀÔ·ÂÇÉ¿¡ ¿ä±¸ÇÑ ÀÎÅÍ·´Æ® (IRQ0,IRQ1..)´Â 8259AÀÇ ³»ºÎ ·¹Áö½ºÅÍ¿¡ ÀÇÇØ ÀÎÅÍ·´Æ® ¿ì¼±¼øÀ§, ±ÝÁö/Çã°¡ ¿©ºÎ°¡ ó¸®µÈ ÈÄ ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÒ Á¶°ÇÀÌ µÇ¸é 8259A°¡ 80x86 CPU¿¡ ÀÎÅÍ·´Æ®¸¦ °É°Ô µÈ´Ù. ÀÌ ¶§ 8259A·ÎºÎÅÍ ¿ä±¸µÈ ÀÎÅÍ·´Æ®¸¦ ±ÝÁöÇÏ´Â °ÍÀÌ ¹Ù·Î disable()ÇÔ¼öÀÇ ¿ªÇÒÀÌ´Ù.
enable() ÇÔ¼ö
80x86 CPUÀÇ Çϵå¿þ¾î ÀÎÅÍ·´Æ®¸¦ Çã°¡ÇÑ´Ù. ÀÌ ÇÔ¼ö´Â disable()ÇÔ¼ö¿Í ¹Ý´ëµÇ´Â µ¿ÀÛÀ» Çϸç, ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù.
#include <dos.h>
void enable(void);
void disable(void);
FP_SEG(), FP_OFF()
far Æ÷ÀÎÅÍ (1MB ¾îµå·¹½º °ø°£À» Áö½ÃÇÏ´Â Æ÷ÀÎÅÍ)ÀÇ ¼¼±×¸ÕÆ®¿Í ¿É¼ÂÀ» ¾ò´Â ¸ÅÅ©·Î ÇÔ¼ö. far Æ÷ÀÎÅÍ´Â 4¹ÙÀÌÆ®·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç, À§ÂÊÀÇ 2¹ÙÀÌÆ®´Â ¼¼±×¸ÕÆ®¸¦ ³ªÅ¸³»°í ¾Æ·¡ÂÊÀÇ 2¹ÙÀÌÆ®´Â ¿É¼ÂÀ» ³ªÅ¸³½´Ù.
unsigned int seg,off;
void far* fp=0x12345678L; /* far Æ÷ÀÎÅÍ fp¸¦ Á¤ÀÇÇÏ°í fp¿¡ 0x12345678 Áï,
fp = 0x1234:0x3456 ·Î ¸¸µç´Ù.*/
seg=FP_SEG(fp); /* fpÀÇ ¼¼±×¸ÕÆ®(=0x1234)¸¦ ¾ò´Â´Ù */
off=FP_OFF(fp); /* fpÀÇ ¿É¼Â(=0x3456)À» ¾ò´Â´Ù*/
peek(), peekb(), poke(), pokeb()
ÁÖ¾îÁø ¼¼±×¸ÕÆ®/¿É¼ÂÀÌ Áö½ÃÇÏ´Â ¸Þ¸ð¸®¿¡ µ¥ÀÌŸ¸¦ Àаí/¾²´Â ÇÔ¼öÀÌ´Ù.
unsigned char byte;
unsigned int word;
unsigned int seg=0x1234,off=0x3456;
byte = peekb(seg,off); /* ¸Þ¸ð¸®ÀÇ seg:off¿¡¼ 1 ¹ÙÀÌÆ®¸¦ Àд´٠*/
word = peek(seg,off); /* ¸Þ¸ð¸®ÀÇ seg:off¿¡¼ 2 ¹ÙÀÌÆ®(=1¿öµå)¸¦ Àд´٠*/
pokeb(seg,off,byte); /* ¸Þ¸ð¸®ÀÇ seg:off¿¡¼ 1 ¹ÙÀÌÆ® µ¥ÀÌŸ(byte)¸¦ ¾´´Ù */
poke(seg,off,word); /* ¸Þ¸ð¸®ÀÇ seg:off¿¡¼ 2 ¹ÙÀÌÆ® µ¥ÀÌŸ(word)¸¦ ¾´´Ù */
inport(), inportb(), outport(), outportb()
V25, 386EX ÇÁ·Î¼¼¼´Â 80x86°ú ¸¶Âù°¡Áö·Î ¸Þ¸ð¸® ¸Ê°ú IO¸ÊÀÌ ±¸º°µÇ¾î ÀÖ´Ù. peek(), poke() ÇÔ¼ö°¡ ¸Þ¸ð¸®¸¦ ´Ù·ç´Â ÇÔ¼öÀÎ ¹Ý¸é, inport(), outport()´Â IOÆ÷Æ®·ÎºÎÅÍ µ¥ÀÌŸ¸¦ ÁÖ°í¹Þ´Â ¿ªÇÒÀ» ÇÑ´Ù.
unsigned char byte;
unsigned int word;
unsigned int port=0x100;
byte = inportb(port); /*IOÆ÷Æ®ÀÇ port¹øÁö(=0x100)¿¡¼ 1 ¹ÙÀÌÆ®¸¦ Àд´Ù*/
word = inport(port); /*IOÆ÷Æ®ÀÇ port¹øÁö(=0x100)¿¡¼ 2 ¹ÙÀÌÆ®¸¦ Àд´Ù*/
outportb(port,byte); /*IOÆ÷Æ®ÀÇ port¹øÁö(=0x100)¿¡ 1 ¹ÙÀÌÆ®(=byte)¸¦ ¾´´Ù*/
outport(port,word); /*IOÆ÷Æ®ÀÇ port¹øÁö(=0x100)¿¡ 2 ¹ÙÀÌÆ®(=word)¸¦ ¾´´Ù*/
setvect(), getvect()
³»ÀåÇüÁ¦¾î±â¸¦ ²Ù¹Ì´Ù º¸¸é ÀڽŸ¸ÀÇ ÀÎÅÍ·´Æ® ·çƾÀ» ´Ù·ç¾î¾ß ÇÒ °æ¿ì°¡ »ý±ä´Ù. ÁÖ±âÀûÀ¸·Î Å°º¸µå¸¦ °Ë»çÇؼ ¹«½¼ Å°°¡ ´·ÁÁ³³ª¸¦ ¾Ë¾Æ³½´Ù´ø°¡, ¿ÜºÎ¿¡¼ ÀÎÅÍ·´Æ® ¿ä±¸°¡ ¿ÔÀ» ¶§, ÀûÀýÇÑ ÀÀ´äÀ» ÇØÁÖ´Â °æ¿ì¿¡ »ç¿ëÇÏ´Â ÇÔ¼ö´Ù. ÀÌ ÇÔ¼ö¿¡¼´Â ÇÔ¼ö Æ÷ÀÎÅ͸¦ »ç¿ëÇϴµ¥, ÇÔ¼ö Æ÷ÀÎÅÍ¿¡ Ä£¼÷ÇÏÁö ¾Ê´Â »ç¶÷Àº ¿¹Á¦¸¦ °ø½Äó·³ ¿Ü¿ö¼ ¾²°í, ±âȸ°¡ ÀÖÀ» ¶§ ÀÚ¼¼ÇÑ ¿ø¸®¸¦ ÆľÇÇصµ ÁöÀåÀÌ ¾øÀ» °ÍÀÌ´Ù.
»õ·Ó°Ô ¼³Ä¡ÇÒ ÀÎÅÍ·´Æ®´Â void interrupt ¶ó´Â Åͺ¸-CÀÇ Å°¿öµå·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù. ÀÌ ¿¹Á¦´Â ŸÀÌ¸Ó ÀÎÅÍ·´Æ®(ÀÎÅÍ·´Æ® º¤Å͹øÈ£ 0x1Ch)¸¦ »õ·Î ¸¸µé¾î ŸÀÌ¸Ó ÀÎÅÍ·´Æ®°¡ °É¸± ¶§¸¶´Ù timer_count¶ó´Â º¯¼ö¸¦ 1¾¿ Áõ°¡½ÃÅ°´Â µ¿ÀÛÀ» ÇÏ´Â °ÍÀÌ´Ù.
/* »õ·Î¿î ŸÀÌ¸Ó ÀÎÅÍ·´Æ® ·çƾÀ» ¸¸µç´Ù */
/* TB-386EX º¸µåÀÇ Å¸ÀÌ¸Ó ÀÎÅÍ·´Æ®(int 1Ch)´Â Çϵå¿þ¾î ÀÎÅÍ·´Æ®À̸ç 10ms¸¶´Ù ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÑ´Ù */
/* »õ·Ó°Ô ÀÛ¼ºÇÑ ÀÎÅÍ·´Æ® ·çƾ new_int1Ch */
int timer_count=0; /* Àü¿ªº¯¼ö¸¦ ¼±¾ðÇÑ´Ù.*/
void interrupt new_int1Ch(void)
{
enable(); /* ¶Ç ´Ù¸¥ ÀÎÅÍ·´Æ®¸¦ Çã°¡ÇÑ´Ù */
timer_count++; /* ÀÎÅÍ·´Æ®°¡ °É¸± ¶§¸¶´Ù timer_count°ªÀ» Áõ°¡½ÃŲ´Ù */
}
void my_function(void)
{
for(;;) /* ¹«ÇÑ ·çÇÁ¸¦ µ·´Ù*/
if(timer_count>1000) break; /* timer_count°¡ 1000º¸´Ù Å©¸é for¹®À» Å»ÃâÇÑ´Ù. */
}
void main(void)
{
void interrupt (*old_int1Ch)(); /* ÀÎÅÍ·´Æ®ÇÔ¼ö Æ÷ÀÎÅÍ */
old_int1Ch = getvect(0x1C); /* ÀÎÅÍ·´Æ® 0x1C ¼ºñ½º·çƾÀÇ ¹øÁö¸¦ old_int1Ch¿¡ ÀúÀåÇÑ´Ù*/
setvect(0x1C,new_int1Ch); /* »õ·Î¿î ÀÎÅÍ·´Æ®(new_int1Ch)¸¦ ¼³Ä¡ÇÑ´Ù */
my_function(); /* ÀÏ¹Ý ÇÔ¼ö¸¦ ½ÇÇàÇÑ´Ù */
setvect(0x1C,old_int1Ch); /* ¸ðµç ÀÏÀÌ Á¾·áµÇ¸é ¿ø·¡ÀÇ ÀÎÅÍ·´Æ®(old_int1Ch)¸¦ ÀÎÅÍ·´Æ®¹øÈ£ 0x1Ch·Î º¹±¸ÇÑ´Ù */
}
int86()
80x86 CPU¿¡ ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍ·´Æ®¸¦ ¹ß»ý½ÃÅ°´Â ÇÔ¼öÀÌ´Ù. ·¹Áö½ºÅÍ¿¡ Àû´çÇÑ °ªÀ» ³Ö°í, ÀÎÅÍ·´Æ®¸¦ °É¾î¼, ÀÎÅÍ·´Æ®·çƾ¿¡¼ ó¸®ÇÑ ·¹Áö½ºÅÍÀÇ °ªÀ» ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö¿¡¼´Â Åͺ¸-C¿¡¼ Á¦°øÇÏ´Â REGS¶ó´Â °ø¿ëü(union)¿Í ÀÌ °ø¿ëüÀÇ Ç׸ñÀÎ µÎ°³ÀÇ ±¸Á¶Ã¼ WORDREGS, BYTEREGS¸¦ »ç¿ëÇÏ¿© ·¹Áö½ºÅÍ °ªÀ» Àü´ÞÇÑ´Ù.
struct WORDREGS {
unsigned int ax, bx, cx, dx, si, di, cflag, flags;
}; /* 8°³ÀÇ ¿öµå(2¹ÙÀÌÆ®) ´ÜÀ§ ·¹Áö½ºÅ͸¦ Ç׸ñÀ¸·ÎÇÑ ±¸Á¶Ã¼*/
struct BYTEREGS {
unsigned char al, ah, bl, bh, cl, ch, dl, dh;
}; /* 8°³ÀÇ ¹ÙÀÌÆ®´ÜÀ§ ·¹Áö½ºÅ͸¦ Ç׸ñÀ¸·Î ÇÑ ±¸Á¶Ã¼*/
unionREGS{
structWORDREGS x; /*·¹Áö½ºÅ͸¦ ¿öµå ´ÜÀ§·Î Á¶ÀÛ*/
structBYTEREGS h; /*·¹Áö½ºÅ͸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î Á¶ÀÛ*/
};¡¡
REGS °ø¿ëüÀÇ Ç׸ñÀº 8¿öµå(16¹ÙÀÌÆ®) Å©±âÀÇ WORDREGS¿Í 4¿öµå(8¹ÙÀÌÆ®) Å©±âÀÇ BYTEREGSÀÌ°í, WORDREGS¿Í BYTEREGS°¡ °ãÄ¡´Â ¾Æ·¡ÂÊ 4¿öµå´Â WORDREGSÀÇ Ç׸ñ°ú BYTEREGSÀÇ Ç׸ñÀ¸·Î ÀÚÀ¯·Ó°Ô Á¢±ÙÇÒ ¼ö ÀÖ´Ù. Áï REGS ÇüÀÇ º¯¼ö rÀ» ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇϸé 80x86ÀÇ CPU ·¹Áö½ºÅÍ AX¸¦ ´ÙÀ½°ú °°ÀÌ Á¶ÀÛÇÒ ¼ö ÀÖ´Ù. Âü°í·Î 80x86ÀÇ AX·¹Áö½ºÅÍ´Â 16ºñÆ® ·¹Áö½ºÅÍÀÌ¸ç »óÀ§ 8ºñÆ®¸¦ AH, ÇÏÀ§ 8ºñÆ®¸¦ AL·Î Ç¥±âÇÑ´Ù. 80x86ÀÇ BX, CX, DX ·¹Áö½ºÅ͵µ °°Àº ¹æ¹ýÀ» Àû¿ëÇÑ´Ù.
REGS r;
r.x.ax=0x1234 /* ÀÇ»çÀûÀ¸·Î 80x86 CPUÀÇ AX ·¹Áö½ºÅÍ¿¡ 0x1234¸¦ ÇÒ´çÇÑ´Ù.*/
/* AX ·¹Áö½ºÅÍ¿¡ ´ëÇÑ ¿öµå´ÜÀ§ 󸮴 ´ÙÀ½°ú °°ÀÌ ¹ÙÀÌÆ® ´ÜÀ§·Î Çصµ
µ¿ÀÏÇÑ °á°ú¸¦ ³½´Ù*/
r.h.ah=0x12; /* ÀÇ»çÀûÀ¸·Î AH¿¡ 0x12¸¦ ÇÒ´ç */
r.h.al=0x34; /* ÀÇ»çÀûÀ¸·Î AL¿¡ 0X34¸¦ ÇÒ´ç */
int86()ÇÔ¼ö¸¦ »ç¿ëÇÑ ¿¹¸¦ º»´Ù.
REGS rin,rout;
rin.h.ah = 0x0E;
rin.h.al = ''S'';
int86(0x10,&rin,&rout); /* ÀÎÅÍ·´Æ® 0x10h (ºñµð¿À ÀÎÅÍ·´Æ®)¸¦ °Ç´Ù. À̶§ AH=0x0E, AL=''S''ÀÇ °ªÀ» ³Ö´Â´Ù. 󸮰á°ú´Â rout¿¡ ½Ç·Á ³ª¿Â´Ù */