|
|
|
||||||||||||||||||||||||
|
S10-4. IOÇÔ¼ö INtime ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎÀÇ I/OÀÔÃâ·Â ÇÔ¼ö1. ÇÔ¼öÀÇ Á¾·ùÀÌÇÏÀÇ ÇÔ¼ö°¡ I/OÀÇ ÀÔÃâ·Â¿ëÀ¸·Î ÁغñµÇ¾î ÀÖ½À´Ï´Ù.ÀÌ·¯ÇÑ ÇÔ¼ö´Â Á÷Á¢ CPU ¸í·É in, out¸¦ ¹ßÇàÇÏ´Â ¸ÅÅ©·Î·Î¼ Á¦°øµÇ°í ÀÖ½À´Ï´Ù.
2. Çì´õ ÆÄÀÏ·ÎÀÇ ÇÔ¼ö ¼±¾ðÇÔ¼ö´Â,<rt.h> (³»ºÎÀûÀ¸·Î´Â i86.h, i186.h, i386.h) ÆÄÀÏ¿¡ ÀÌÇÏ¿Í °°Àº ŸÀÔÀ¸·Î ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù. unsigned char inbyte(unsigned short port);
unsigned short inhword(unsigned short port);
unsigned long inword(unsigned short port);
void outbyte (unsigned short port, unsigned char value);
void outhword (unsigned short port, unsigned short value);
void outword (unsigned short port, unsigned long value);
void blockinbyte (unsigned short port, unsigned char *destination, unsigned int count);
void blockinhword(unsigned short port, unsigned short *destination, unsigned int count);
void blockinword (unsigned short port, unsigned long *destination, unsigned int count);
void blockoutbyte(unsigned short port, unsigned char const *source, unsigned int count);
void blockouthword(unsigned short port, unsigned short const *source, unsigned int count);
void blockoutword(unsigned short port, unsigned long const *source, unsigned int count);
3. ÇÔ¼öÀÇ È£Ã⿹I/O¿¡ ´ëÇÑ ÇÔ¼öÀÇ È£Ãâ¿¡ ´ëÇÏ°í ¿¹¸¦ »ç¿ëÇØ ÀÌÇÏ¿¡ ¼³¸íÇÕ´Ï´Ù. ¨ç I/O¹øÁö 1234 h¿¡¼ 8ºñÆ® µ¥ÀÌŸ¸¦ »Ì¾Æ Æ÷ÇÔ 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù. BYTE in_data8;
in_data8 = inbyte( 0x1234 );
outbyte( 0x5678, in_data8 );
¨è I/O¹øÁö 1234 h¿¡¼ 16ºñÆ® µ¥ÀÌŸ¸¦ »Ì¾Æ Æ÷ÇÔ 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù. WORD in_data16;
in_data16 = inhword( 0x1234 );
outhword( 0x5678, in_data16 );
¨é I/O¹øÁö 1234 h¿¡¼ 32ºñÆ® µ¥ÀÌŸ¸¦ »Ì¾Æ Æ÷ÇÔ 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù. DWORD in_data32;
in_data16 = inword( 0x1234 );
outword( 0x5678, in_data32 );
¨ê I/O¹øÁö 1234 h·ÎºÎÅÍ ¿¬¼ÓÇØ 100¹ÙÀÌÆ® ¼öÁß¿¡ ³Ö¾î, 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ 100¹ÙÀÌÆ® Ãâ·ÂÇÑ´Ù. BYTE in_buf8[100];
blockinbyte( 0x1234, in_buf8, 100 );
blockoutbyte( 0x5678, in_buf8, 100 );
¨ë I/O¹øÁö 1234 h·ÎºÎÅÍ ¿¬¼ÓÇØ 100 ÇÏÇÁ ¿öµå ÃëÇØ ºÁ, 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ 100 ÇÏÇÁ ¿öµå Ãâ·ÂÇÑ´Ù. WORD in_buf16[100];
blockinhword( 0x1234, in_buf16, 100 );
blockouthword( 0x5678, in_buf16, 100 );
¨ì I/O¹øÁö 1234 h·ÎºÎÅÍ ¿¬¼ÓÇØ 100 ¿öµå ¼öÁß¿¡ ³Ö¾î, 5678 h¹øÁö¿¡ ¼öÁß¿¡ ³ÖÀº µ¥ÀÌÅ͸¦ 100 ¿öµå Ãâ·ÂÇÑ´Ù. DWORD in_buf32[100];
blockinword( 0x1234, in_buf32, 100 );
blockoutword( 0x5678, in_buf32, 100 );
|
|||||||||||||||||||||||||
|
|