#56 ÀÓÀ롂 (turbo28 ) [°­ÁÂ] C±íÀº°÷6-1: °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ 05/06 00:23 213 line ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î °ÔÀç: 1990.10 HWP/TXT º¯È¯: 1993.5.5 >>> Åͺ¸ CÀÇ ±íÀº °÷ <<< Á¦6ȸ °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ Simplified Segment Directives ±Û/ÀÓÀ롂 (¼­¿ï´ë ±â°è°øÇаú4) --------------------------------------------------------------------- 1 º»¹®¿¡ ¾Õ¼­ --------------------------------------------------------------------- Áö³­ 5¿ù¿¡ ¿¬À縦 °³½ÃÇÑ ÀÌÈÄ·Î Åͺ¸ CÀÇ ±íÀº °÷ÀÌ 6ȸ¸¦ ¸ÂÀÌÇß ´Ù. ±æ´Ù¸é ±ä ½Ã°£ µ¿¾È ¾î·Æ°í Â¥Áõ³ª´Â À̾߱âµé·Î °è¼Ó ÀÌ¾î ¿Ô´Âµ¥ µ¶ÀÚ ¿©·¯ºÐµé²² ¾ó¸¶¸¸ÇÑ µµ¿òÀÌ µÇ¾ú´ÂÁö ±Ã±ÝÇÏ´Ù. ¾Æ¹¸µç ¿¬Àç´Â ¹Ù¾ß Èå·Î Á¾¹Ý¿¡ Á¢¾îµé¾ú´Ù. »ç½Ç Áö³­ ȸ±îÁöÀÇ ¼³¸í¿¡¼­ Åͺ¸ C¿Í ¾î¼Àºí¸® ·çƾ°úÀÇ ¸µÅ©¿¡ °üÇÑ ¾ê±â´Â ÀϴܶôÀÌ µÈ ¼ÀÀÌ´Ù. ÇÏÁö¸¸ ±×·¯±â À§ÇØ Áö ÄÑ¾ß ÇÒ Á¶°Çµé, ƯÈ÷ ¼¼±×¸ÕÆ® Á¦¾î¿¡ °ü·ÃµÈ »çÇ×ÀÌ ³Ê¹«³ªµµ ±î´Ù·Ó°í º¹ÀâÇϱ⠶§¹®¿¡ C ÇÁ·Î±×·¡¸ÓµéÀÇ ºÎ´ãÀ» °¡Áß½ÃÅ°´Â ¸éÀÌ ¾øÁö ¾Ê´Ù. ±× ·¡¼­ À̹ø ȸºÎÅÍ´Â Åͺ¸ ¾î¼Àºí·¯ µîÀÌ Á¦°øÇÏ´Â "°£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ" ¶ó´Â Æí¸®ÇÑ ±â´ÉÀ» ÅëÇÏ¿© º¸´Ù °£ÆíÇÏ°Ô ¾î¼Àºí¸® ·çƾÀ» ÀÛ¼ºÇÏ´Â ¹æ¹ý À» ¼Ò°³ÇÏ°íÀÚ ÇÑ´Ù. --------------------------------------------------------------------- 2 ¼¼±×¸ÕÆ® Áö½ÃÀÚÀÇ µÎ ºÎ·ù --------------------------------------------------------------------- ¼¼±×¸ÕÆ® Á¦¾î(segment control)´Â ¾î¼Àºí¸® ·çƾ¸¦ ÀÛ¼ºÇÏ´Â µ¥ ÀÖ¾î ¼­ ½Ç·Î °ñÄ©°Å¸® ÁßÀÇ °ñÄ©°Å¸®¿¡ ¼ÓÇÑ´Ù. ¾î¼Àºí¸®¾î ÀÚü¸¦ ¾Æ¹«¸® Àß ¾Ë°í ÀÖ´Ù°í Çصµ ¼¼±×¸ÕÆ® ¹èÄ¡¿¡ °üÇØ °¡º±°Ô »ý°¢Çß´Ù°¡ Å« ÄÚ ´ÙÄ¡´Â ¼ö°¡ ¸¹´Ù. ¼³»ó°¡»óÀ¸·Î ±âÁ¸ÀÇ ¼¼±×¸ÕÆ® Áö½ÃÀÚ(segment directive)µé Àº, ´Ü ÇÑ ±ºµ¥¶óµµ Ʋ¸®°Ô ÁöÁ¤ÇÏ´Â ³¯¿¡´Â "°ÑÀ¸·Î º¸ÀÌÁö ¾Ê´Â" Ä¡¸íÀû ÀÎ °á°ú¸¦ ÃÊ·¡ÇϱⰡ ÀϾ¥À̱⠶§¹®¿¡, »ç¿ëÇϱ⿡ »ó´çÈ÷ Á¶½É½º·´°í ²¬ ²ô·¯¿î °ÍÀÌ »ç½ÇÀÌ´Ù. ±×·¡¼­ Åͺ¸ ¾î¼Àºí·¯´Â °ñÄ¡¾ÆÇ ¼¼±×¸ÕÆ® Á¦¾î¸¦ ¼Õ½±°í °£´ÜÈ÷ ó¸®ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇÏ¿© ±âÁ¸ÀÇ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¿Í º°µµ·Î ¶Ç ´Ù¸¥ ºÎ·ùÀÇ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¸¦ Á¦°øÇÑ´Ù. ±âÁ¸ÀÇ ºÎ·ù´Â Áö³­ ȸ±îÁö ¼³¸íÇÑ ¼¼±×¸ÕÆ® Áö½ÃÀÚ SEGMENT, ENDS, G ROUP, ASSUMEµîµîÀ¸·Î¼­ "Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀÚ(standard segment direct ive)"¶ó°í ºÎ¸¥´Ù. ÀÌ Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀÚ´Â ¾Æ´Ù½ÃÇÇ ±× »ç¿ë¹ýÀÌ ²Ï³ª º¹ÀâÇÏ°í ¼¼½ÉÇÑ ÁÖÀÇ°¡ ¿ä±¸µÈ´Ù. ¹Ý¸é¿¡ Ãß°¡·Î Á¦°øÇÏ´Â Áö½ÃÀÚµéÀº À̹ø ȸºÎÅÍ ¼³¸íÇÒ °ÍÀ¸·Î¼­ "°£ ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ(simplified segment directive)"¶ó°í ºÒ¸®´Âµ¥ ±× »ç ¿ë¹ýÀÌ ´õ¾øÀÌ °£´ÜÇÏ´Ù. ÀÌ °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¸¦ ¾´´Ù¸é ƯÈ÷ C¿ÍÀÇ ¸µÅ©¿¡¼­´Â ´õ ÀÌ»ó Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¸¦ ¾µ ÇϵîÀÇ ÀÌÀ¯¸¦ ãÀ» ¼ö ¾ø À» Á¤µµÀÌ´Ù. °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¿¡´Â <Ç¥ 1>°ú °°ÀÌ ¸ðµÎ 9°³°¡ ÀÖ´Ù. ±× Áß¿¡¼­ DOSSEG´Â ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà(segment-ordering convention)À», .MODELÀº ¾î¼Àºí¸® ¸ðµâÀÇ ¸Þ¸ð¸® ¸ðµ¨À» Á¤ÀÇÇÑ´Ù. ³ª¸ÓÁö Áö½ÃÀÚµéÀº ¸ðµÎ ¼¼±×¸Õ Æ® »ý¼º¿¡ °ü·ÃµÈ Áö½ÃÀÚµéÀÌ´Ù. <Ç¥ 1> °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ +------------------------------+ | DOSSEG .MODEL | +------------------------------+ | .CODE .DATA .DATA? | | .FARDATA .FARDATA? | | .STACK .CONST | +------------------------------+ --------------------------------------------------------------------- 3 ¼¼±×¸ÕÆ® »ý¼º¿¡ °ü·ÃµÈ Áö½ÃÀÚ --------------------------------------------------------------------- »õ±×¸ÕÆ® »ý¼º¿¡ °ü·ÃµÈ Áö½ÃÀÚ´Â <Ç¥ 1>¿¡¼­ DOSSEG¿Í .MODELÀ» Á¦¿Ü ÇÑ ³ª¸ÓÁö ¸ðµç Áö½ÃÀÚµéÀÌ´Ù. ÀÌ Áß¿¡¼­ .STACKÀº C¿Í ¸µÅ©ÇÏ´Â °æ¿ì¿¡ »ç¿ëÀÌ ±ÝÁöµÇ°í .CONST´Â Åͺ¸ ÆĽºÄ®°úÀÇ ¸µÅ©¿¡¼­³ª ÇÊ¿äÇϸç, ±× ¿Ü¿¡ .FARDATA´Â °Å´ë ¸ðµ¨¿¡¼­³ª ÇÊ¿äÇÏ°í, .FARDATA?´Â C¿¡¼­ Áö¿øÇÏÁö ¾Ê´Â ¼¼±×¸ÕÆ®À̹ǷΠ¸ðµÎ ³í¿Ü·Î ÇÏ°í, ¿©±â¼­´Â ±× ³ª¸ÓÁöÀÇ ²À ÇÊ¿äÇÑ ¼¼±× ¸ÕÆ® Áö½ÃÀڵ鿡 ´ëÇØ ÁýÁßÀûÀ¸·Î ¾Ë¾Æº¸°Ú´Ù. 3.1 .CODE Áö½ÃÀÚ .CODE Áö½ÃÀÚ´Â ±× ÁöÁ¡ÀÌ ÄÚµå ¼¼±×¸ÕÆ®ÀÇ ½ÃÀÛÀÓÀ» ¾î¼Àºí·¯¿¡ ¾Ë¸° ´Ù. .CODE Áö½ÃÀÚ¸¦ Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀڷΠġȯÇÏ¸é ´ÙÀ½°ú °°´Ù. ¿©±â ¼­ °¡, ¼ÒÇü ÄÚµå ¸ðµ¨¿¡¼­´Â _TEXT, ´ëÇü ÄÚµå ¸ðµ¨¿¡¼­´Â ¸ðµâ¸í_ TEXT¶ó´Â °ÍÀº ÀÌ¹Ì ¼³¸íÇÑ ¹Ù ÀÖ´Ù. ±×¸®°í C¿¡¼­¿Í ´Þ¸® Á¤·Ä¹æ½ÄÀÌ BYT E°¡ ¾Æ´Ñ WORDÀε¥ ÀÌ´Â ÇÁ·Î±×·¥ ½ÇÇà°ú ¿ÏÀüÈ÷ ¹«°üÇÑ °ÍÀÌ´Ï ½Å°æ ¾²Áö ¾Ê¾Æµµ µÈ´Ù. .CODE Áö½ÃÀÚ¿Í µ¿ÀÏÇÑÇ¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀÚ +-----------------------------------+ | ENDS @CurSeg | | SEGMENT WORD PUBLIC 'CODE' | +-----------------------------------+ À§¿¡¼­ @CurSeg´Â ±âÁ¤ÀÇ ·¹À̺í(predefeind label)·Î¼­ "ÇöÀç ¼¼±×¸Õ Æ®(current segment)"¸¦ ÀǹÌÇÑ´Ù. µû¶ó¼­ ENDS @CurSeg¹®Àº .CODE Áö½ÃÀÚ Á÷ÀüÀÇ ¼¼±×¸ÕÆ®¸¦ ³¡³»¸ç ¸¸¾à Á÷Àü¿¡ ¾Æ¹«·± ¼¼±×¸ÕÆ®µµ Á¸ÀçÇÏÁö ¾Ê¾Ò ´Ù¸é .CODE´Â ENDS @CurSeg¿¡ ÇØ´çÇÏ´Â ÀÏÀ» ÇÏÁö ¾Ê´Â´Ù. ÀÌ´Â ´Ù¸¥ Áö½Ã ÀÚ¿¡¼­µµ ¸¶Âù°¡ÁöÀÌ´Ù. 3.2 .DATA Áö½ÃÀÚ ´ÙÀ½À¸·Î .DATA Áö½ÃÀÚ´Â ±× ÁöÁ¡ÀÌ ÃʱâÈ­µÈ µ¥ÀÌÅÍ(ISD) ¼¼±×¸ÕÆ®ÀÇ ½ÃÀÛÀÓÀ» ¾î¼Àºí·¯¿¡ ¾Ë¸°´Ù. .DATA Áö½ÃÀÚ¸¦ Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀÚ·Î Ä¡ ȯÇÏ¸é ´ÙÀ½°ú °°´Ù. ¿©±â¼­ ¸¸¾à °Å´ë ¸ðµ¨À̶ó¸é ±× ¸Þ¸ð¸® ±¸Á¶»ó .DAT A Áö½ÃÀÚ¸¦ ½á¼­´Â ¾È µÇ°í ´ë½Å¿¡ .FARDATA Áö½ÃÀÚ¸¦ ½á¾ß ÇÑ´Ù. .DATA Áö½ÃÀÚ¿Í µ¿ÀÏÇÑ Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀÚ +-----------------------------------+ | ENDS @CurSeg | | _DATA SEGMENT WORD PUBLIC 'DATA' | +-----------------------------------+ 3.3 .DATA? Áö½ÃÀÚ .DATA?´Â ±× ÁöÁ¡ÀÌ ºñÃʱâÈ­µÈ µ¥ÀÌÅÍ(UISD) ¼¼±×¸ÕÆ®ÀÇ ½ÃÀÛÀÓÀ» ¾î ¼Àºí·¯¿¡ ¾Ë¸°´Ù. .DATA? Áö½ÃÀÚ¸¦ Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀڷΠġȯÇÏ¸é ´Ù À½°ú °°´Ù. ¿©±â¼­ ¸¸¾à °Å´ë ¸ðµ¨À̶ó¸é ±× ¸Þ¸ð¸® ±¸Á¶»ó .DATA?¸¦ ¾µ ¼ö ¾ø´Ù. .DATA? Áö½ÃÀÚ¿Í µ¿ÀÏÇÑ Ç¥ÁØ ¼¼±×¸ÕÆ® Áö½ÃÀÚ +----------------------------------+ | ENDS @CurSeg | | _BSS SEGMENT WORD PUBLIC 'BSS' | +----------------------------------+ ±× ³ª¸ÓÁö 4°³ÀÇ Áö½ÃÀÚ .FARDATA, .FARDATA?, .CONST, .STACK µî¿¡ °üÇÑ »çÇ×Àº ¸Þ¸ð¸® ¸ðµ¨º°·Î <Ç¥ 2>¡­<Ç¥ 7>À» Âü°íÇϱ⠹ٶó¸ç, ÀÚ¼¼ÇÑ ¼³¸íÀº C¿ÍÀÇ ¸µÅ©¿¡¼­´Â º°·Î ÇÊ¿äÇÏÁö ¾Ê´Ù°í ÆÇ´ÜµÇ¾î »ý·«ÇÏ°Ú´Ù. µ¡ºÙ¿©¼­ °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¸¦ ¾µ °æ¿ì¿¡´Â ¾î¼Àºí¸® ¸ðµâ ¸Ç ³¡¿¡ ENDS @CurSeg¹®À¸·Î ¼¼±×¸ÕÆ®¸¦ ³¡³¾ ÇÊ¿ä°¡ ¾ø´Ù. ±×°ÍÀº ¾î¼Àºí·¯°¡ END ¹®À» ¸¸³¯ ¶§ ÀÚµ¿ÀûÀ¸·Î ¼¼±×¸ÕÆ®¸¦ ³¡³» Áֱ⠶§¹®ÀÌ´Ù. <Ç¥ 2> ÃʼÒÇü ¸ðµ¨¿¡¼­ÀÇ ³»Á¤ ¼¼±×¸ÕÆ®¿Í ±× Çü½Ä --------------------------------------------------------------------- Áö½ÃÀÚ ¼¼±×¸ÕÆ®¸í Á¤·Ä¹æ½Ä Á¶ÇÕÇü½Ä Ŭ·¡½º¸í ±×·ì¸í ºñ°í --------------------------------------------------------------------- .CODE _TEXT WORD PUBLIC 'CODE' DGROUP .DATA _DATA WORD PUBLIC 'DATA' DGROUP .CONST CONST WORD PUBLIC 'CONST' DGROUP * .DATA? _BSS WORD PUBLIC 'BSS' DGROUP .STACK STACK PARA STACK 'STACK' DGROUP * .FARDATA FAR_DATA PARA PRIVATE 'FAR_DATA' * .FARDATA? FAR_BSS PARA PRIVATE 'FAR_BSS' * --------------------------------------------------------------------- * CÀÇ ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà¿¡ ÀÇÇÏ¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. <Ç¥ 3> ¼ÒÇü ¸ðµ¨¿¡¼­ÀÇ ³»Á¤ ¼¼±×¸ÕÆ®¿Í ±× Çü½Ä --------------------------------------------------------------------- Áö½ÃÀÚ ¼¼±×¸ÕÆ®¸í Á¤·Ä¹æ½Ä Á¶ÇÕÇü½Ä Ŭ·¡½º¸í ±×·ì¸í ºñ°í --------------------------------------------------------------------- .CODE _TEXT WORD PUBLIC 'CODE' .FARDATA FAR_DATA PARA PRIVATE 'FAR_DATA' * .FARDATA? FAR_BSS PARA PRIVATE 'FAR_BSS' * .DATA _DATA WORD PUBLIC 'DATA' DGROUP .CONST CONST WORD PUBLIC 'CONST' DGROUP * .DATA? _BSS WORD PUBLIC 'BSS' DGROUP .STACK STACK PARA STACK 'STACK' DGROUP * --------------------------------------------------------------------- * CÀÇ ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà¿¡ ÀÇÇÏ¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. <Ç¥ 4> ÁßÇü ¸ðµ¨¿¡¼­ÀÇ ³»Á¤ ¼¼±×¸ÕÆ®¿Í ±× Çü½Ä --------------------------------------------------------------------- Áö½ÃÀÚ ¼¼±×¸ÕÆ®¸í Á¤·Ä¹æ½Ä Á¶ÇÕÇü½Ä Ŭ·¡½º¸í ±×·ì¸í ºñ°í --------------------------------------------------------------------- .CODE ¸ðµâ¸í_TEXT WORD PUBLIC 'CODE' .FARDATA FAR_DATA PARA PRIVATE 'FAR_DATA' * .FARDATA? FAR_BSS PARA PRIVATE 'FAR_BSS' * .DATA _DATA WORD PUBLIC 'DATA' DGROUP .CONST CONST WORD PUBLIC 'CONST' DGROUP * .DATA? _BSS WORD PUBLIC 'BSS' DGROUP .STACK STACK PARA STACK 'STACK' DGROUP * --------------------------------------------------------------------- * CÀÇ ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà¿¡ ÀÇÇÏ¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. <Ç¥ 5> Áß¼ÒÇü¸ðµ¨¿¡¼­ÀÇ ³»Á¤ ¼¼±×¸ÕÆ®¿Í ±× Çü½Ä --------------------------------------------------------------------- Áö½ÃÀÚ ¼¼±×¸ÕÆ®¸í Á¤·Ä¹æ½Ä Á¶ÇÕÇü½Ä Ŭ·¡½º¸í ±×·ì¸í ºñ°í --------------------------------------------------------------------- .CODE _TEXT WORD PUBLIC 'CODE' .FARDATA FAR_DATA PARA PRIVATE 'FAR_DATA' * .FARDATA? FAR_BSS PARA PRIVATE 'FAR_BSS' * .DATA _DATA WORD PUBLIC 'DATA' DGROUP .CONST CONST WORD PUBLIC 'CONST' DGROUP * .DATA? _BSS WORD PUBLIC 'BSS' DGROUP .STACK STACK PARA STACK 'STACK' DGROUP * --------------------------------------------------------------------- * CÀÇ ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà¿¡ ÀÇÇÏ¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. <Ç¥ 6> ´ëÇü ¸ðµ¨¿¡¼­ÀÇ ³»Á¤ ¼¼±×¸ÕÆ®¿Í ±× Çü½Ä --------------------------------------------------------------------- Áö½ÃÀÚ ¼¼±×¸ÕÆ®¸í Á¤·Ä¹æ½Ä Á¶ÇÕÇü½Ä Ŭ·¡½º¸í ±×·ì¸í ºñ°í --------------------------------------------------------------------- .CODE ¸ðµâ¸í_TEXT WORD PUBLIC 'CODE' .FARDATA FAR_DATA PARA PRIVATE 'FAR_DATA' * .FARDATA? FAR_BSS PARA PRIVATE 'FAR_BSS' * .DATA _DATA WORD PUBLIC 'DATA' DGROUP .CONST CONST WORD PUBLIC 'CONST' DGROUP * .DATA? _BSS WORD PUBLIC 'BSS' DGROUP .STACK STACK PARA STACK 'STACK' DGROUP * --------------------------------------------------------------------- * CÀÇ ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà¿¡ ÀÇÇÏ¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. <Ç¥ 7> °Å´ë ¸ðµ¨¿¡¼­ÀÇ ³»Á¤ ¼¼±×¸ÕÆ®¿Í ±× Çü½Ä --------------------------------------------------------------------- Áö½ÃÀÚ ¼¼±×¸ÕÆ®¸í Á¤·Ä¹æ½Ä Á¶ÇÕÇü½Ä Ŭ·¡½º¸í ±×·ì¸í ºñ°í --------------------------------------------------------------------- .CODE ¸ðµâ¸í_TEXT WORD PUBLIC 'CODE' .FARDATA FAR_DATA PARA PRIVATE 'FAR_DATA' .FARDATA? FAR_BSS PARA PRIVATE 'FAR_BSS' * .DATA _DATA WORD PUBLIC 'DATA' DGROUP * .CONST CONST WORD PUBLIC 'CONST' DGROUP * .DATA? _BSS WORD PUBLIC 'BSS' DGROUP * .STACK STACK PARA STACK 'STACK' DGROUP * --------------------------------------------------------------------- * CÀÇ ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà¿¡ ÀÇÇÏ¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù.  #57 ÀÓÀ롂 (turbo28 ) [°­ÁÂ] C±íÀº°÷6-2: °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ 05/06 00:24 289 line --------------------------------------------------------------------- 4 °¢Á¾ ¼¼±×¸ÕÆ®¸íÀÇ ÂüÁ¶ --------------------------------------------------------------------- 4.1 ±âÁ¤ÀÇ ·¹À̺í ÇÑÆí °æ¿ì¿¡ µû¶ó DS ·¹Áö½ºÅ͸¦ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®ÀÇ ¼±µÎ·Î ¼³Á¤ÇØ¾ß ÇÒ ¶§°¡ Á¾Á¾ ÀÖ´Ù. ±×·² ¶§´Â _DATA¿Í °°Àº "ÁøÂ¥" ¼¼±×¸ÕÆ®¸íÀ» ¸í½ÃÀû À¸·Î ÁöÁ¤ÇÏ´Â °ÍÀº ¸Å¿ì ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù. ¿Ö³Ä ÇÏ¸é °£ÀÌ ¼¼±×¸ÕÆ® Áö½Ã ÀÚ¸¦ ¾µ ¶§¿¡´Â ¸í½ÃÀûÀ¸·Î ¼¼±×¸ÕÆ®¸íÀ» ÁöÁ¤ÇÒ ÇÊ¿ä°¡ ÀüÇô ¾ø±â ¶§¹®ÀÌ ´Ù. ±×¿Í °°Àº °æ¿ì¿¡ ´ëºñÇÏ¿© ¾î¼Àºí·¯´Â "±âÁ¤ÀÇ ·¹À̺í(predefined la ble)"À̶ó´Â °ÍÀ» Á¦°øÇÑ´Ù. ÀÌ´Â ¾î¼Àºí·¯°¡ Á¦°øÇÏ´Â ±âÁ¤ÀÇ ±âÈ£(prede fined symbol) ÁßÀÇ Çϳª·Î¼­ Åͺ¸ C¿¡¼­ÀÇ __TURBOC__³ª __SMALL__°ú °° Àº ±âÁ¤ÀÇ ¸ÅÅ©·Î »ó¼ö¿Í À¯»çÇÏ´Ù. Åͺ¸ ¾î¼Àºí·¯°¡ Á¦°øÇÏ´Â ±âÁ¤ÀÇ ·¹ÀÌºí¿¡´Â ´ÙÀ½°ú °°ÀÌ ¸ðµÎ 6°¡Áö °¡ ÀÖ´Ù. ±× Áß¿¡¼­ ƯÈ÷ @Data, @CurSeg¿¡ ÁÖ¸ñÇØ Áֱ⠹ٶõ´Ù. <Ç¥ 8> ±âÁ¤ÀÇ ·¹À̺í ------------------------------------------- ±âÁ¤ÀÇ ·¹À̺í ÀÇ¹Ì ------------------------------------------- @Code ½ÇÁ¦ .CODE ¼¼±×¸ÕÆ®¸í @Data ½ÇÁ¦ ±×·ì¸í(Åë»ó DGROUP) @FarData ½ÇÁ¦ .FARDATA ¼¼±×¸ÕÆ®¸í @FarData? ½ÇÁ¦ .FARDATA? ¼¼±×¸ÕÆ®¸í @CurSeg ÇöÀç ¼¼±×¸ÕÆ®¸í ------------------------------------------- 4.2 @Data @Data´Â ½ÇÁ¦ÀÇ µ¥ÀÌÅÍ ±×·ì¸íÀ» ³ªÅ¸³½´Ù. Åë»ó DGROUPÀÌ µÈ´Ù. ±×·± µ¥ ÃʼÒÇü ¸ðµ¨ÀÌ ¾Æ´Ï¶ó¸é DGROUP ±×·ìÀÇ ¼±µÎ¿¡ ÃʱâÈ­µÈ µ¥ÀÌÅÍ ¼¼±×¸Õ Æ®°¡ ³õÀ̹ǷΠ@Data´Â ½ÇÁ¦ÀÇ ÃʱâÈ­µÈ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¸íÀÎ _DATA¶ó°í ºÁµµ »ç½Ç»ó ¹«¹æÇÏ´Ù. ÀϹÝÀûÀ¸·Î DS ·¹Áö½ºÅ͸¦ ÀüÇô °Çµå¸®Áö ¾Ê´Â´Ù¸é @Data´Â ¾µ ÀÏÀÌ ÀüÇô ¾ø´Ù. ÇÏÁö¸¸ ºñµð¿À·¥À» Á÷Á¢ Á¶ÀÛÇÏ´Â µîÀÇ Æ¯º°ÇÑ ÀÌÀ¯¿¡¼­ DS¸¦ ´Ù¸¥ °ªÀ¸·Î º¯°æÇßÀ» ¶§¿¡´Â ±× ÈÄ¿¡ ´Ù½Ã ¿ø·¡´ë·Î º¹±¸½ÃÄÑ¾ß Çϴµ¥, ±× ¶§ @Data¸¦ ¾²´Â °ÍÀÌ ÁÁ´Ù. ¶ÇÇÑ ASSUME¹®¿¡ ÀÇÇØ DS ·¹Áö½ºÅ͸¦ °¡Á¤ ÇÒ ¶§¿Í segment override°¡ ÇÊ¿äÇÒ ¶§¿¡µµ @Data¸¦ ¾µ ¼ö ÀÖÀ¸¸ç ¶Ç ±×·¸ °Ô ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ÀüÇüÀûÀÎ »ç¿ë ¿¹´Â ´ÙÀ½°ú °°´Ù. .CODE ...... mov ax,0b000h --- ºñµð¿À·¥ mov ds,ax ASSUME ds:NOTHING ...... --- ºñµð¿À·¥ÀÇ Á¶ÀÛ mov ax,@Data mov ds,ax --- ¿ø·¡ °ªÀ¸·Î º¹±¸ ASSUME ds:@Data ...... Âü°í·Î DS°ªÀÌ mov³ª pop ds µîÀÇ ¸í·É¿¡ ÀÇÇØ º¯ÇÒ ¶§¿¡´Â ±× Á÷ÈÄ¿¡ ÀûÀýÇÑ ASSUME¹®À» µÎ¾î ¾î¼Àºí·¯¿¡°Ô DS°ªÀÌ ±× ½ÃÁ¡¿¡¼­ º¯°æµÊÀ» ¾Ë·Á ÁÖ´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù. ±×·¡¾ß¸¸ ¾î¼Àºí·¯°¡ ÇÊ¿ä¿¡ ÀÇÇÏ¿© DS¿¡ °ü·ÃµÈ °¢ Á¾ ¿É¼ÂÀ» °è»êÇØ¾ß ÇÒ ¶§ ¿Ã¹Ù¸¥ °á°ú¸¦ µµÃâÇØ ³¾ ¼ö ÀÖ´Ù. ¾È ±×·¯¸é ¿É¼ÂÀÇ °è»êÀÌ À߸øµÇ¾î ¸µÅ©½Ã Fixup overflow ¿¡·¯°¡ ³ª°Å³ª ¸µÅ©°¡ µÇ ´õ¶óµµ ÀüÇô ¾û¶×ÇÑ ¸Þ¸ð¸®¸¦ ÂüÁ¶ÇÏ°Ô µÇ´Â ¼ö°¡ ÀÖ´Ù. ¹°·Ð DS°ªÀÌ ÀϽÃÀûÀ¸·Î º¯ÇØ ÀÖ´Â µ¿¾È¿¡ °ü·ÃµÈ ¿É¼Â °è»êÀÌ ÀüÇô ³ªÅ¸³ªÁö ¾Ê´Â´Ù¸é(¿¹ÄÁµ¥ ¿ÜºÎº¯¼ö µîÀ» ÀüÇô ÂüÁ¶ÇÏÁö ¾Ê´Â´Ù¸é) ±»ÀÌ A SSUME¹®À» ½á¼­ ¾î¼Àºí·¯¿¡ ¾Ë¸± ÇÊ¿ä´Â ¾ø°ÚÀ¸³ª, ¾Æ¹«·¡µµ ¾ÈÀüÀ» À§ÇÏ ¿© ¿øÄ¢À» ÁöÅ°´Â °ÍÀÌ ½Å»ó¿¡ ÀÌ·Î¿ï °ÍÀÌ´Ù. ¾Æ¹¸µç °¢º°È÷ ÁÖÀÇÇϱ⠹٠¶õ´Ù. 4.3 @CurSeg @CurSeg´Â ÂüÁ¶µÈ À§Ä¡¿¡ µû¶ó¼­ ±× À§Ä¡¿¡¼­ÀÇ ÇöÀç ¼¼±×¸ÕÆ®¸í(curr ent segment name)À» ÀǹÌÇÑ´Ù. ¸ðµç ±âÁ¤ÀÇ ·¹À̺íµéÀÌ ´Ù ±×·¸Áö¸¸ @Cur Segµµ ¹Ýµå½Ã °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ·Î ¾î¶°ÇÑ ¼¼±×¸ÕÆ®¶óµµ »ý¼ºµÈ ÀÌÈÄ¿¡ ÃâÇöÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ ASSUME¹®¿¡µµ ¾²ÀÏ ¼ö ÀÖ°í, segment override³ª ±× ¹ÛÀÇ ÇöÀç ¼¼±×¸ÕÆ®¸íÀÌ ÇÊ¿äÇÑ ¸ðµç °÷¿¡ ¾²ÀÏ ¼ö ÀÖ´Ù. ¿¹ÄÁµ¥ ENDS¹®¿¡ ¾²À̸é ÇöÀç ¼¼±×¸ÕÆ®°¡ ±× À§Ä¡¿¡¼­ Á¾°áµÈ´Ù. 4.4 ±âÁ¤ÀÇ ·¹À̺íÀÇ ´ë¼Ò¹®ÀÚ ±¸º° Âü°í·Î ±âÁ¤ÀÇ ·¹ÀÌºí¿¡´Â ¸ðµÎ ´ë¼Ò¹®ÀÚ°¡ ¼¯¿© Àִµ¥ ÀÌ´Â ¾î¼Àºí ·¯°¡ ³»Á¤ÀûÀ¸·Î ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê±â ¶§¹®¿¡ ÆíÀÇ»ó °ü½ÀÀûÀ¸·Î ±× ·¸°Ô ÇÑ °ÍÀÌ´Ù. ¸¸¾à ¸ðµç ¸íĪ¿¡¼­ ´ë¼Ò¹®ÀÚ°¡ ±¸º°µÈ´Ù¸é(¿¹ÄÁµ¥ Åͺ¸ ¾î¼Àºí·¯¿¡¼­ /ml ¿É¼ÇÀ» ÁöÁ¤Çß´Ù¸é) ¸ðµç ±âÁ¤ÀÇ ¸íĪµéÀº ¹Ýµå½Ã ¼Ò¹® ÀÚ¸¸À¸·Î ±â¼úÇØ¾ß ÇÑ´Ù. Áï @Data³ª @CurSeg´Â @data, @curseg·Î ±â¼úÇØ ¾ß ÇÑ´Ù. ÇÏÁö¸¸ Åͺ¸ C¿ÍÀÇ ¸µÅ©¿¡¼­´Â /mx ¿É¼ÇÀ¸·Î ¿ÜºÎ¸íĪ¸¸À» ´ë¼Ò ¹®ÀÚ ±¸º°Çϵµ·Ï Çϱ⠶§¹®¿¡ ±âÁ¤ÀÇ ·¹ÀÌºí¿¡ ´ë¼Ò¹®ÀÚ ¼¯¾î ½áµµ ÀüÇô »ó°ü ¾ø´Ù. --------------------------------------------------------------------- 5 ¸Þ¸ð¸® ¸ðµ¨ÀÇ ¼³Á¤°ú .MODEL Áö½ÃÀÚ --------------------------------------------------------------------- Áö±Ý±îÁö ¼³¸íÇÑ °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚµé°ú ±âÁ¤ÀÇ ·¹À̺íµéÀº ¸ðµÎ ƯÁ¤ ¸Þ¸ð¸® ¸ðµ¨¿¡ °ü·ÃµÇ¾î ÀÖ´Ù. ±×·¸´Ù¸é ¸Þ¸ð¸® ¸ðµ¨Àº ¹«¾ùÀ¸·Î ¼³ Á¤Çϴ°¡ ÇÏ¸é ¹Ù·Î .MODEL Áö½ÃÀÚ·Î ÇàÇÑ´Ù. ±¸Ã¼ÀûÀ¸·Î .MODEL Áö½ÃÀÚ°¡ ÇÏ´Â ÀÏÀº Å©°Ô µÎ °¡Áö·Î ³ª´¶´Ù. [1] ¸Þ¸ð¸® ¸ðµ¨ÀÇ ¼³Á¤ [2] Á¢¼ÓµÉ ¸ÞÀÎ ¸ðµâÀÇ ¾ð¾î ÁöÁ¤ ¿ì¼± .MODELÀº ¾î¼Àºí·¯¿¡°Ô ±× ¾î¼Àºí¸® ¸ðµâÀÇ ¸Þ¸ð¸® ¸ðµ¨À» ¾Ë·Á ÁÖ´Â ¿ªÇÒÀ» Çϴµ¥, ÀÌ Áö½ÃÀÚ´Â DOSSEG¸¦ Á¦¿ÜÇÑ ¸ðµç °£ÀÌ ¼¼±×¸ÕÆ® Áö ½ÃÀÚ ¹× ±âÁ¤ÀÇ ·¹ÀÌºí¿¡ ¼±ÇàÇØ¾ß ÇÑ´Ù. ¿ªÀ¸·Î ¸»Çؼ­ .CODE, .DATA µî Àº .MODEL Áö½ÃÀÚ ¾Õ¿¡ ³ªÅ¸³¯ ¼ö ¾ø´Ù. ±×°ÍÀº ¸ðµç °£ÀÌ ¼¼±×¸ÕÆ® Áö½Ã ÀÚµéÀº ¸Þ¸ð¸® ¸ðµ¨¿¡ °ü·ÃµÇ±â ¶§¹®ÀÌ´Ù. +----------------------------------------------------+ | .MODEL Áö½ÃÀÚ´Â DOSSEG¸¦ Á¦¿ÜÇÑ ¸ðµç °£ÀÌ ¼¼±×¸ÕÆ® | | Áö½ÃÀÚ ¹× ±âÁ¤ÀÇ ·¹ÀÌºí¿¡ ¼±ÇàÇØ¾ß ÇÑ´Ù. | +----------------------------------------------------+ .MODEL Áö½ÃÀÚÀÇ ¿ÏÀüÇÑ ¹®¹ýÀº ´ÙÀ½°ú °°´Ù. [ ]´Â »ý·« °¡´ÉÇÔÀ» ¶æ ÇÑ´Ù. .MODEL ¸Þ¸ð¸®¸ðµ¨[, ¾ð¾î] ¶Ç´Â .MODEL TPASCAL ÀÌ Áß¿¡¼­ ÈÄÀÚ´Â Åͺ¸ ÆĽºÄ®°úÀÇ ¸µÅ©¿¡¼­ ¾²À̴µ¥ ÀÌ °­ÁÂÀÇ ¹üÁÖ ¸¦ ¹þ¾î³ª¹Ç·Î ³í¿Ü·Î ÇÑ´Ù. ¶ÇÇÑ ÀüÀÚ¿¡¼­ ¾ð¾î¸¦ ÁöÁ¤ÇÏ´Â °ÍÀº ´ÙÀ½ ȸ ¿¡¼­ ´Ù·ç±â·Î ÇÏ°í ¿©±â¼­´Â ¸Þ¸ð¸® ¸ðµ¨À» ÁöÁ¤ÇÏ´Â °Í¿¡ °üÇؼ­¸¸ ¾ð±Þ ÇÏ°Ú´Ù. ¸Þ¸ð¸® ¸ðµ¨À» ¼³Á¤ÇÒ ¶§¿¡´Â TINY, SMALL, MEDIUM, COMPACT, LARGE, HUGEÀÇ ¿©¼¸ °¡Áö Áß¿¡ Çϳª¸¦ ÅÃÇÏ¿© ÁöÁ¤ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î ¼ÒÇü ¸ð µ¨·Î ¼³Á¤ÇÏ°íÀÚ ÇÑ´Ù¸é, .MODEL SMALL °ú °°ÀÌ ÇÏ¸é µÇ°í ´ëÇü ¸ðµ¨·Î ¼³Á¤ÇÏ·Á¸é .MODEL LARGE ¿Í °°ÀÌ ÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô¸¸ ÇØ ÁÖ¸é ³ª¸ÓÁö´Â ¾î¼Àºí·¯°¡ ³»ºÎÀûÀ¸·Î ´Ù ¾Ë¾Æ¼­ ó¸®ÇØ ÁØ´Ù. Áï, ÇØ´ç ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¶ó ÀûÀýÇÏ°Ô ±×·ì ¼±¾ðÀ» ÇØÁÖ°í, ASSUME¹®µµ ³»ºÎÀûÀ¸·Î ÀûÀýÇÏ°Ô Ã³¸®ÇØ ÁØ´Ù. µû¶ó¼­ ±×·ì ¼±¾ð À» »ç¿ëÀÚ°¡ ÇØÁÙ ÇÊ¿ä´Â ÀüÇô ¾ø°í, ¶ÇÇÑ DS ·¹Áö½ºÅÍ°ªÀÌ º¯ÇÏÁö ¾Ê´Â ÇÑ ÄÚµå ¼¼±×¸ÕÆ® ³»¿¡¼­ ASSUME¹®À» ¾µ ÀÏÀº ÀüÇô ¾ø´Ù. ±×¹Û¿¡, ´ÙÀ½ ȸ¿¡ ÀÚ¼¼È÷ ¼³¸íÇÏ°ÚÁö¸¸, .MODEL Áö½ÃÀÚ¿¡´Â ¿É¼ÇÀ¸·Î ƯÁ¤ ¾ð¾î¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖµµ·Ï µÇ¾î Àִµ¥, ÀÌ¿Í °°ÀÌ Æ¯Á¤ ¾ð¾î ¿É¼Ç¸¦ ÁöÁ¤Çϸé ÇÔ¼ö(PROC ¡­ ENDP)¸¦ ÀÛ¼ºÇÒ ¶§ ÇØ´ç ¾ð¾î¿¡ °ü·ÃµÈ ÁøÀÔ ÄÚµå ¹× Å»Ãâ Äڵ带 »ý·«ÇÒ ¼ö ÀÖ´Ù´Â Æí¸®ÇÔÀÌ ÀÖ´Ù(ÁÖÀÇ: SI, DI, DS µîÀÇ ´ëÇÇ´Â »ç¿ëÀÚ Ã¥ÀÓÀÓ). ¶ÇÇÑ ¾ð¾î ¿É¼ÇÀ» ÁöÁ¤ÇÔÀ¸·Î½á ¸Å°³º¯¼ö¸¦ ÂüÁ¶ Çϱâ À§ÇØ ARG Áö½ÃÀÚ µîÀ» ¾µ °æ¿ì¿¡ ¾î¼Àºí·¯´Â ¸Å°³º¯¼öµéÀÌ ½ºÅÃ»ó¿¡ ³õÀÌ´Â ¼ø¼­¸¦ ¾Ë ¼ö ÀÖ°Ô µÈ´Ù. .MODEL SMALL,C ƯÈ÷ À§¿Í °°ÀÌ ¾ð¾î ¿É¼ÇÀ¸·Î C¸¦ ÁöÁ¤Çϸé À§¿¡ ¾ð±ÞÇÑ »çÇ׿¡ µ¡ºÙ ¿©¼­ ¸ðµç ¿ÜºÎ¸íĪ¿¡ ºÙ´Â Ãß°¡ÀûÀιØÁÙ¸¶Àúµµ »ý·«ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÂüÀ¸ ·Î Æí¸®ÇÏ´Ù. ÀÌ ¸ðµç ±â´ÉÀ» ´Ù È°¿ëÇÏ¸é ¸¶Ä¡ C¿¡¼­ Çà°£ ¾î¼Àºí¸®(inli ne assembly)¸¦ ¾²´Â µíÇÑ ±âºÐÀ¸·Î ¾î¼Àºí¸® ·çƾÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ¾Æ ¹¸µç º¸´Ù »ó¼¼ÇÑ ¾ê±â´Â ARG Áö½ÃÀÚ¸¦ ¼³¸íÇϸ鼭 °°ÀÌ ¾ð±ÞÇÏ°Ú´Ù. --------------------------------------------------------------------- 6 µµ½º ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà°ú DOSSEG Áö½ÃÀÚ --------------------------------------------------------------------- 6.1 µµ½º ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà DOSSEG Áö½ÃÀÚ´Â ¾ö¹ÐÇÑ Àǹ̿¡¼­ÀÇ °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¶ó°í´Â ÇÒ ¼ö ¾øÁö¸¸ ÁÖ·Î °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¿Í ´õºÒ¾î ¸¹ÀÌ ¾²À̱⠶§¹®¿¡ ÆíÀÇ »ó ±×·¸°Ô ºÐ·ùÇß´Ù. ±×·³ DOSSEG Áö½ÃÀÚÀÇ ¿ëµµ°¡ °ú¿¬ ¹«¾ùÀΰ¡¿¡ °üÇØ ¾Ë¾Æº¸ÀÚ. DOSSEG Áö½ÃÀÚ´Â ¸µÅ©½Ã "µµ½º ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà(DOS segment-order ing convention)"À» µû¸£µµ·Ï ¸µÄ¿¿¡°Ô Áö½ÃÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. µµ½º ¼¼±× ¸ÕÆ® ¹èÄ¡ °üÇà¿¡ ÀÇÇÏ¸é ¸ðµç ¼¼±×¸ÕÆ®µéÀº ´ÙÀ½°ú °°Àº Â÷·Ê´ë·Î ½ÇÇà È­ÀÏ ³»¿¡ ¹èÄ¡µÈ´Ù. ±¸Ã¼ÀûÀÎ ³»¿ëÀº Àß ¸ô¶óµµ µÇ´Ï±î ¾î°ÅÁö·Î ¿Ü¿ì°Å ³ª ÀÌÇØÇÏ·Á°í ¼ö°íÇÏÁö ¸»±â ¹Ù¶õ´Ù. --------------------------------------------------------------------- (1) Ŭ·¡½º°¡ 'CODE'ÀÎ ¸ðµç ¼¼±×¸ÕÆ® (2) Ŭ·¡½º°¡ 'CODE'°¡ ¾Æ´Ï°í, DGROUP ±×·ì¿¡ ¼ÓÇÏÁö ¾Ê´Â ¸ðµç¼¼±×¸ÕÆ® (3) DGROUP¿¡ ¼ÓÇÏ´Â ¼¼±×¸ÕÆ®µéÀº ´ÙÀ½°ú °°Àº ¼ø¼­·Î ¹èÄ¡µÈ´Ù. a) Ŭ·¡½º°¡ 'BEGDATA'ÀÎ ¸ðµç ¼¼±×¸ÕÆ® b) Ŭ·¡½º°¡ 'BEGDATA', 'BSS' ¶Ç´Â 'STACK'ÀÌ ¾Æ´Ñ ¸ðµç ¼¼±×¸ÕÆ® c) Ŭ·¡½º°¡ 'BSS'ÀÎ ¸ðµç ¼¼±×¸ÕÆ® d) Ŭ·¡½º°¡ 'STACK'ÀÎ ¸ðµç ¼¼±×¸ÕÆ® --------------------------------------------------------------------- À§ÀÇ °üÇàÀ» º¸¸é .CODE ¼¼±×¸ÕÆ®ÀÎ _TEXT³ª ¸ðµâ¸í_TEXT´Â 1¹ø¿¡, .D ATA ¼¼±×¸ÕÆ®ÀÎ _DATA´Â 3-b¹ø¿¡, .DATA? ¼¼±×¸ÕÆ®ÀÎ _BSS´Â 3-c¹ø¿¡ ÇØ ´çÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÌ·¸°Ô º¼ ¶§ <Ç¥ 2>~<Ç¥ 7>¿¡ ³ª¿­µÇ¾î ÀÖ´Â ¼¼±×¸Õ Æ®µéÀÇ ¼ø¼­°¡ ¹Ù·Î ÀÌ ±ÔÄ¢¿¡ ÀÇÇÑ °ÍÀÓÀº ½±°Ô ´«Ä¡Ã§ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¼¼±×¸ÕÆ®µéÀÇ ¼ø¼­°¡ À§¿¡¼­ °áÁ¤µÇÁö ¾ÊÀ» ¶§¿¡´Â Åë»ó ¸µÄ¿°¡ ¹ß°ßÇÑ ¼ø ¼­´ë·Î ¼¼±×¸ÕÆ®µéÀÌ ³õÀδÙ. ÇÑÆí °Å´ë ¸ðµ¨ÀÏ ¶§¿¡´Â ¾ê±â°¡ Á» º¹ÀâÇØ Áö´Âµ¥, C ¸ðµâ¿¡¼­ÀÇ °¢ ¸ðµâÀÇ ÃʱâÈ­µÈ µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®ÀÎ ¸ðµâ¸í_DATA´Â Ŭ·¡½º°¡ 'DATA'À̱⠶§¹®¿¡ 3-b¿¡ ÇØ´çÇÏ´Â ¹Ý¸é¿¡, ¾î¼Àºí¸® ¸ðµâ¿¡¼­ .FARDATA ¼¼±×¸ÕÆ®ÀÎ F AR_DATA´Â Ŭ·¡½º°¡ 'FAR_DATA'À̱⠶§¹®¿¡ 2¹ø¿¡ ÇØ´çÇÔÀ» ÁÖÀÇÇϱ⠹ٶõ ´Ù. ÀÌ´Â Áöµµ È­ÀÏ(map file)À» ºÁ¾ß ÇÒ ¶§¿¡³ª ÇÊ¿äÇÑ Á¤º¸À̹ǷΠº¸Åë Àº ¸ô¶óµµ µÈ´Ù. 6.2 DOSSEG Áö½ÃÀÚ ¹æ±Ý Àü¿¡ ¾ð±ÞÇß´Ù½ÃÇÇ DOSSEG Áö½ÃÀÚ´Â ¸µÅ©½Ã "µµ½º ¼¼±×¸ÕÆ® ¹èÄ¡ °üÇà(DOS segment-ordering convention)"À» µû¸£µµ·Ï ¸µÄ¿¿¡°Ô Áö½ÃÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. ±×·³À¸·Î½á ÇÁ·Î±×·¡¸Ó´Â ¼¼±×¸ÕÆ®¸¦ ¾î¶»°Ô ¹èÄ¡ÇÒ °ÍÀΰ¡ ¿¡ °üÇØ º°·Î ½Å°æ ¾²Áö ¾Ê¾Æµµ µÈ´Ù. ¶ÇÇÑ ÀÌ DOSSEG Áö½ÃÀÚ´Â ÇϳªÀÇ ½Ç Çà È­ÀÏÀ» ±¸¼ºÇÏ´Â Àü ¸ðµâÀ» ÅëÅоî ÇÑ ¹ø ÀÌ»ó ¾²ÀÌ´Â °ÍÀ¸·Î Á·ÇÏ´Ù. Áï ´Ü ÇÑ ¹ø ¾²´ø 100¹ø ¾²´ø È¿°ú´Â ¸¶Âù°¡ÁöÀÌ´Ù. ±×·±µ¥ °í¼öÁØ ¾ð¾î, ¿¹ÄÁµ¥ C¿Í ¸µÅ©ÇÏ´Â °æ¿ì¿¡´Â µµ½º ¼¼±×¸ÕÆ® ¹è Ä¡ °üÇàÀÌ CÂÊ¿¡¼­ ÀÌ¹Ì Á¤ÇØÁ® ÀÖ´Ù. ±¸Ã¼ÀûÀ¸·Î ¸»Çؼ­ CÀÇ ±âµ¿ ¸ðµâ(s tartup module)¿¡ ¿ÏÀüÇÑ ¼¼±×¸ÕÆ® ¹èÄ¡ ¼ø¼­°¡ Á¤ÇØÁ® ÀÖ´Ù. µû¶ó¼­ ¾î¼À ºí¸® ¸ðµâÂÊ¿¡¼­´Â DOSSEG Áö½ÃÀÚ´Â ¾µ ÇÊ¿ä°¡ »ç½Ç»óÀüÇô ¾ø´Ù. ±×·¸´Ù¸é DOSSEG´Â ¾ðÁ¦ ¾²À̴°¡? ¹Ù·Î ¼ø¼öÇÑ µ¶¸³ÀûÀÎ ¾î¼Àºí¸® ÇÁ·Î±×·¥(standalone assembly program)À» © ¶§¿¡ ¾²ÀδÙ. ÇÏÁö¸¸ °í¼öÁØ ÀÇ ¾ð¾î¿Í Á¢¼ÓÇÏ´Â °æ¿ì¿¡µµ °ü·ÊÀûÀ¸·Î DOSSEG Áö½ÃÀÚ¸¦ °¢ ¾î¼Àºí¸® ¸ð µâ¸¶´Ù Çѹø¾¿ ¾²´Â °ÍÀÌ º¸ÅëÀÌ´Ù. ´ë°³ .MODEL Áö½ÃÀÚ Á÷Àü¿¡ ÀÌ Áö½ÃÀÚ ¸¦ ³õ´Â´Ù. ÀÌ ¶§ÀÇ DOSSEG Áö½ÃÀÚÀÇ Àǹ̴ ¼¼±×¸ÕÆ® ¹èÄ¡¸¦ ±ÔÁ¤ÇѴٱ⠺¸´Ù´Â "¿©±â¼­ºÎÅÍ ¾î¼Àºí¸® Äڵ尡 ½ÃÀ۵ȴÙ"´Â ¼±¾ðÀûÀÎ Àǹ̰¡ °­ÇÏ´Ù. µûÁö °í º¸¸é ÆĽºÄ®ÀÇ program¹®ÀÇ ¼º°Ý°ú À¯»çÇÏ´Ù. ±×·¯¹Ç·Î C¿Í Á¢¼ÓÇÏ´Â µ¥¿¡´Â »ç½Ç»ó ºÒÇÊ¿äÇÏ´õ¶óµµ °ü·ÊÀûÀ¸·Î ¾î¼Àºí¸® Äڵ尡 ½ÃÀ۵DZâ Á÷Àü ¿¡, Åë»ó .MODEL Áö½ÃÀÚ Á÷Àü¿¡ DOSSEG Áö½ÃÀÚ¸¦ µÎ±â ¹Ù¶õ´Ù. ±× ¿¹´Â ´Ù À½°ú °°´Ù. ; ; È­ÀÏ ¼±µÎÀÇ ÁÖ¼®¹®µé... ; DOSSEG --- ¿©±â¼­ºÎÅÍ ¾î¼Àºí¸® Äڵ尡 ½ÃÀ۵ȴٴ ÀÇ¹Ì .MODEL SMALL ...... --- ¾î¼Àºí¸® ÄÚµåµé --------------------------------------------------------------------- 7 ¾î¼Àºí¸® ¸ðµâÀÇ ÀϹÝÀûÀÎ ¾ç½Ä --------------------------------------------------------------------- Áö±Ý±îÁö ¾Ë¾Æº» °¢Á¾ °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚµéÀ» ¾´´Ù¸é ´ÙÀ½°ú °°Àº ÀϹÝÀûÀÎ ¾î¼Àºí¸® ¸ðµâÀÇ ¾ç½ÄÀ» »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù. ´Ü, ÀÌ°Ç ¾îµð±îÁö ³ª ÀÏ·Ê¿¡ ºÒ°úÇÏ°í »óȲ¿¡ µû¶ó ¾ó¸¶µçÁö ±× ¾ç½ÄÀº ¹Ù²ð ¼ö ÀÖ´Ù. <¿¹Á¦ 1> ¾î¼Àºí¸® ¸ðµâÀÇ ÀϹÝÀûÀÎ ¾ç½Ä --------------------------------------------------------------------- ; ; È­ÀÏ ¼±µÎÀÇ ÁÖ¼®¹® ; DOSSEG +--C ¾ð¾î ¿É¼ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. .MODEL ¸Þ¸ð¸®¸ðµ¨[,C] <°¢Á¾ EQU¹®> (¿ø°Å¸®ÇÔ¼öÀÇ ¼±¾ðÀº ¸ðµç ¼¼±×¸ÕÆ®ÀÇ ¿ÜºÎ¿¡ µÎ¾î¾ß ÇÑ´Ù) .DATA <°¢Á¾ ÃʱâÈ­µÈ ¿ÜºÎº¯¼ö/Á¤Àûº¯¼öµéÀÇ Á¤ÀÇ> .DATA? <°¢Á¾ ºñÃʱâÈ­µÈ ¿ÜºÎº¯¼ö/Á¤Àûº¯¼öµéÀÇ Á¤ÀÇ> (½ÇÇà Á÷ÈÄ ±âµ¿ Äڵ忡 ÀÇÇÏ¿© ÀÚµ¿À¸·Î 0ÀÇ °ªÀ» °¡Áö°Ô µÊ) .CODE -- ¼ÒÇü ÄÚµå ¸ðµ¨¿¡¼­¸¸ PUBLIC ÇÔ¼ö¸í +--- »ý·«Çϰųª NEAR ¶Ç´Â FAR ÇÔ¼ö¸í PROC È£Ãâ°Å¸® ----+ push bp --- ÁøÀÔ ÄÚµåÀÇ ÀÏ·Ê mov bp,sp --- C ¾ð¾î ¿É¼ÇÀ» ÁöÁ¤ÇßÀ» ¶§¿¡´Â »ý·« <¾î¼Àºí¸® ÄÚµå> pop bp -+- Å»Ãâ ÄÚµåÀÇ ÀÏ·Ê ret -+ C ¾ð¾î ¿É¼ÇÀ» ÁöÁ¤ÇßÀ» ¶§¿¡´Â »ý·« ÇÔ¼ö¸í ENDP END --------------------------------------------------------------------- --------------------------------------------------------------------- 8 ´ÙÀ½¿¡´Â --------------------------------------------------------------------- ´ÙÀ½ ȸ¿¡´Â °è¼ÓÇؼ­ ¸Å°³º¯¼ö ¹× ÀÚµ¿º¯¼ö¸¦ ÂüÁ¶ÇÏ´Â µ¥ ¾²ÀÌ´Â AR G, LOCAL Áö½ÃÀÚÀÇ »ç¿ë¹ý°ú °£ÀÌ ¼¼±×¸ÕÆ® Áö½ÃÀÚ¸¦ »ç¿ëÇÏ´Â ¸î °¡Áö ¿¹ µéÀ» ¼Ò°³ÇÏ°Ú´Ù. <Á¦6ȸ ³¡>