¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¦¸ñ: [°­ÁÂ] MASM 6.0 »ç¿ë¹ý ------------------------------------------------------------------------------ [MASM6.0/2]ÀνºÅç, ¿¡µðÅ͸¦ ¸¾¿¡ µé°Ô.. À̹ø °­Á¿¡¼­´Â ¸ÅÁò 6.0ÀÇ ÀνºÅç ¹æ¹ý°ú ¿¡µðÅ͸¦ »ç¿ëÀÚ ¸¾¿¡ µé °Ô ¹Ù²Ù´Â °Í¿¡ ´ëÇØ ¾ê±â¸¦ ÇÏ°Ú½À´Ï´Ù. **** ¸ÅÁò 6.0ÀÇ ÀνºÅç¿¡ ´ëÇØ **** 1. ÀνºÅç ¹æ¹ý¿¡ ´ëÇØ.. --> ¸ÅÁò 6.0ÀÇ ÀνºÅç ¹æ¹ýÀº ¾ÆÁÖ °£´ÜÇÕ´Ï´Ù. SETUPµð½ºÅ©¸¦ A µå¶ó À̺꿡 ³Ö°í SETUPÀ» ŸÀÌÇÁ ÇÏ¸é ´ÙÀ½°ú °°Àº ¸Þ´º°¡ ³ª¿É´Ï´Ù. (ÆíÀÇ»ó ¹øÈ£¸¦ »ðÀÔÇÕ´Ï´Ù.) 1. Install the Microsoft Macro Assembler 2. Install the Macrro Assembler using defaults 3. Run SETUP without installing any files 4. View important documentation notes (README.DOC) 5. View the packing list (PACKING.LST) 6. Copy a file from the distribution disks 7. Exit SETUP ¸¸¾à ¿©·¯ ÇÁ·Î±×·¥µéÀ» ´Ù·ç½Å ºÐµéÀ̶ó¸é ¼³¸íÀÌ ¾øÀ̵µ ±Ý¹æ ÀÎ ½ºÅçÇϽø®¶ó º¾´Ï´Ù. °¡Àå °£´ÜÇÑ ¹æ¹ýÀº 2¹øÀ» °í¸£¸é ±Ý¹æ µË´Ï ´Ù. ±×·¯¸é ¿©·¯ °áÁ¤ »óȲ ( SAMPLEÇÁ·Î±×·¥µéÀ» º¹»çÇÒ °ÍÀΰ¡ÀÇ ¿©ºÎ, BRIEF ¿¡µðÅÍÀÇ ¿¡¹Ä·¹À̼ÇÀ» ÇÒ °ÍÀΰ¡ÀÇ ¿©ºÎ µîµî ) À» º¸¿©ÁÖ°í, °Å±â¼­ ¹Ù²Ü¸¸ÇÑ °ÍÀ» ¹Ù²Ù°í ¸Þ´º ¸Ç À§¿¡ À§Ä¡ÇÑ NO CHANGE¸¦ ¼±ÅÃÇÏ¸é °ð¹Ù·Î ÀνºÅçÀ» ½ÃÀÛÇÕ´Ï´Ù. ¸ðµç °áÁ¤»óȲ¿¡ ´ëÇØ °è¼Ó ¹®´ä½ÄÀ¸·Î ³»¿ëÀ» °áÁ¤Çϸ鼭 ÀνºÅç À» ÇÏ°íÀÚ 1¹øÀ» ¼±ÅÃÇÏ¸é µË´Ï´Ù. ±×·±µ¥ Á¦°¡ Çϳª Åͺ¸ °è¿­ÀÇ ¿¡µðÅÍÀ» ¾²½Ã´Â ºÐ²² ±ÇÇÏ°í ½ÍÀº °ÍÀº, µðÆúÆ®·Î µÇ¾î ÀÖÁö´Â ¾ÊÁö¸¸ BRIEF ¿¡µðÅÍÀÇ ¿¡¹Ä·¹À̼ÇÀ» ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁÀ» µí ½Í½À ´Ï´Ù. Åͺ¸ °è¿­°ú Å°°¡ ¸¹ÀÌ ºñ½ÁÇϹǷΠÁ¶±Ý¸¸ ¹Ù²Ù¸é º° ¾î·Á¿ò ¾øÀÌ ¿¡µðÅ͸¦ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. 2. ÀνºÅç ÈÄ¿¡ ÇØ¾ß ÇÒ °Íµé.. --> À§ÀÇ ¹æ¹ýÀ¸·Î ´Ù ÀνºÅçÀ» ÇÏ°í ³­´ÙÀ½ ÇØ¾ß ÇÒ Áß¿äÇÑ °ÍÀº ¹Ù·Î AUTOEXEC.BAT°ú CONFIG.SYS¸¦ ¹Ù²Ù´Â °ÍÀÔ´Ï´Ù. ±×¸®°í TOOLS.PRE ¶ó´Â ÆÄÀÏÀ» TOOLS.INI·Î À̸§À» ¹Ù²Ù¾î¾ß ÇÕ´Ï´Ù. AUTOEXEC.BAT¿Í CONFIG.SYS¿¡ ÷°¡ÇÒ ³»¿ëÀÌ µé¾îÀÖ´Â ÆÄÀÏÀº ±âº» µð·ºÅ丮ÀÎ C:/MASM/BIN¿¡ NEW-VARS.BAT°ú NEW-CONF.SYS°¡ ÀÖ½À´Ï ´Ù. ÀÌ°ÍÀ» °¢°¢ AUTOEXEC.BAT°ú CONFIG.SYS¿¡ »ðÀÔÇÏ¸é µË´Ï´Ù. NEW-CONF.SYS´Â FILES°ú BUFFERS¸¦ Á¤ÇÏ´Â °ÍÀ¸·Î º°·Î Áß¿äÇÏÁö´Â ¾ÊÀ¸³ª NEW-VARS´Â ÇïÇÁ ÆÄÀÏ°ú INCLUDEÆÄÀÏ µîÀÇ °æ·Î°¡ µé¾î ÀÖ À¸¹Ç·Î ²À AUTOEXEC.BAT¿¡ »ðÀÔÀ» ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¶Ç, TOOLS.PRE°¡ ±âº»µð·ºÅ丮ÀÎ C:/MASM/INIT¿¡ Àִµ¥ À̸¦ TOOLS.INI·Î ¹Ù²Ù¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. **** PWBÀÇ °£·«ÇÑ ¼Ò°³¿Í ¿¡µðÅ͸¦ ¸¾¿¡ µé°Ô ¹Ù²Ù´Â ¹ý **** 1. Programmer's WorkBench (PWB)¿¡ ´ëÇؼ­.. --> Àú¹ø¿¡µµ ¸»ÇßµíÀÌ PWB´Â À©µµ¿ì ¹æ½ÄÀÇ ÅëÇÕ °³¹ß ȯ°æÀ¸·Î¼­ °Å ±â¼­ ¼Ò½º ÀÛ¼º, ¾î¼Àºí, ¸µÅ·, µð¹ö±ë, ¼Ò½º ºê¶ó¿ìÁ®(browser) ±â´É, ¿Ïº®ÇÑ ¿Â¶óÀÎ ÇïÇÁ ½Ã½ºÅÛÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. PWB¸¦ ½ÇÇà½ÃÅ°·Á¸é °£´ÜÈ÷ PWB¶ó°í Ä¡¸é µË´Ï´Ù. PWB¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº Åͺ¸³ª º¼·£µå °è¿­ÀÇ IDE(ÅëÇÕ °³¹ß ȯ°æ)°ú ºñ½ÁÇÏ°í ¶ÇÇÑ ¿Â¶óÀÎ ÇïÇÁ¿¡ ¾ÆÁÖ ÀÚ¼¼È÷ ³ª¿Í ÀÖÀ¸¹Ç·Î »ý·«À» ÇÕ´Ï´Ù. 2. ¿¡µðÅÍ »ç¿ë¿¡ °üÇؼ­... --> ¿©·¯ ¿¡µðÅ͸¦ ¾¸¿¡ µû¶ó ¹®Á¦°¡ µÇ´Â °ÍÀº °¢°¢ ¿¡µðÅÍ ¸¶´Ù ¾²´Â Å°°¡ ´Ù¸£´Ù´Â °ÍÀÔ´Ï´Ù. ¿ø·¡ pwb¿¡µðÅÍÀÇ Å°´Â ¸¹ÀÌ ¾²ÀÌ°í ÀÖ´Â Åͺ¸ °è¿­°ú ¸¹ÀÌ ´Þ¶ó¼­ ¾Ö¸¦ ¸Ô½À´Ï´Ù. °¡·É Åͺ¸ °è¿­¿¡¼­´Â ÆÄÀÏÀÇ ¸Ç óÀ½À¸·Î °¡´Â Å°´Â Ctrl+PageUp Å°À̳ª pwb¿¡¼­´Â Ctrl+HomeÅ° ÀÔ´Ï´Ù. ºñ±³Àû ºñ½ÁÇÑ °ÍÀÌ À§¿¡¼­ ¸»ÇÑ Brief¿¡µðÅÍ ÀÔ´Ï´Ù. ±×·¡¼­ Åͺ¸°è¿­À» ¸¹ÀÌ ¾²½Ã´Â ºÐÀº À§¿¡¼­ ÀνºÅçÀ» ÇÒ ¶§ Brief¿¡µðÅÍ ¿¡¹Ä·¹À̼ÇÀ» ¼±ÅÃÇ϶ó°í ±Ç°í Çß½À´Ï´Ù. ±×·³ À̹ø¿¡´Â ¿¡µðÅÍÀÇ Å°¸¦ Àڱ⠸¾´ë·Î ¹Ù²Ù´Â °Í¿¡ ´ëÇØ À̾߱â ÇÏ °Ú½À´Ï´Ù. ¿¡µðÅÍÀÇ Å°¸¦ ¹Ù²Ù·Á¸é pwbÀÇ ¸Þ´º¿¡¼­ OPTIONÀÇ Key Assignments ¸¦ ¼±ÅÃÀ» ÇÕ´Ï´Ù. ±×·¯¸é ±×³É ¾î¶² ÆÄÀÏÀÌ È­¸é¿¡ ¶ß°Ô µË´Ï´Ù. ±× ³»¿ëÀº ÇÔ¼ö : Å° ÀÇ Çü½ÄÀÌ µÇ¾î Àִµ¥ ´Ü¼øÈ÷ Å°¸¦ º¯È¯ ½Ã Å°¸é µË´Ï´Ù. °¡·É ÆÄÀÏÀÇ ¸Ç óÀ½À¸·Î ¿À´Â ÇÔ¼öÀÇ À̸§Àº pwb¿¡¼­ begfileÀÔ´Ï ´Ù. ¸¸¾à Brief ¿¡¹Ä·¹ÀÌ¼Ç ¸ðµå¸¦ ¼±ÅÃÇÏÁö ¾Ê°í µðÆúÆ®·Î ÀνºÅç À» ÇßÀ¸¸é ´ÙÀ½°ú °°ÀÌ ³ª¿Ã °ÍÀÔ´Ï´Ù. begfile : Ctrl+Home ¿©±â¼­ ¸¸¾à ±× Å°¸¦ Ctrl+PgUpÀ¸·Î ¹Ù²Ù°í ½ÍÀ¸¸é ´Ü¼øÈ÷ ´Ù¸¥ ¿¡ µðÅ͸¦ ¾²´Â °Íó·³ DelÅ°¸¦ ÀÌ¿ëÇؼ­ À§ÀÇ HomeÀ» PgUpÀ¸·Î ¹Ù²Ù ¸é µË´Ï´Ù. ±×·¯¸é ¹Ù²î¾ú´Ù´Â °ÍÀ» ¾Ë·Á ÁÖ±â À§Çؼ­ ¹Ù²î¾îÁø ÁÙ ÀÇ »ö±òÀÌ ¹Ù²î°Ô µË´Ï´Ù. ¸¸¾à ÀνÄÇÒ ¼ö ¾ø´Â Å°¸¦ Àû°Å³ª ( °¡ ·É sadfó·³) À߸øµÈ Çü½ÄÀ¸·Î Àû°Å³ª ( Å°ÀÇ Á¶ÇÕÀº +·Î ¿¬°áµÇ ¾î¾ß Çϴµ¥ -À¸·Î ¿¬°áÀ» ÇÒ¶§)ÇÏ¸é ´ÙÀ½ÁÙ·Î ³»·Á °¡Áö ¸øÇÏ°Ô µÇ¾î Å°¸¦ Á¦´ë·Î ½á ÁÖ¾î¾ß °è¼Ó Å°¸¦ ¹Ù²Ü ÀÖ°Ô µË´Ï´Ù. ±×·¯¸é ¸¹ÀÌ ¾²À̸鼭µµ ¿¡µðÅÍ ¸¶´Ù ´Ù¸¥ ÇÔ¼ö¸¦ ¿­°ÅÇغ¸ÁÒ. begfile --> ÆÄÀÏÀÇ ¸Ç óÀ½¿¡ Ä¿¼­¸¦ À§Ä¡. endfile --> ÆÄÀÏÀÇ ¸Ç ³¡¿¡ Ä¿¼­¸¦ À§Ä¡. insertmode --> insert, overwrite »óŸ¦ Åä±Û(toggle) ldelete --> ÇÑ ÁÙÀ» Áö¿ò menukey --> ¸Þ´º¸¦ ºÎ¸§ ´ÙÀ½Àº pwb±âº» ¿¡µðÅÍ¿¡´Â ÇÔ¼ö Àε¥ brief¿¡µðÅ͸¦ ¿¡¹Ä·¹À̼ÇÇÏ ±â À§ÇØ ¸¸µé¾îÁö ¸ÅÅ©·Î ÀÔ´Ï´Ù. Áï À̰͵éÀº brief¿¡¹Ä·¹À̼ÇÀ» ¼±ÅÃÇßÀ» °æ¿ì¿¡¸¸ ³ª¿É´Ï´Ù. beginnig_of_line --> ÁÙÀÇ ¸ÇóÀ½À¸·Î °£´Ù. ( Ä®·³ 1) ( ±âº» ÇÔ¼ö¿¡ beglineÀ̶ó°í Àִµ¥ ÀÌ°ÍÀº ¾ÕÀÇ °ø¹é¹®ÀÚ¸¦ ¹«½ÃÇÑ, ¸Ç óÀ½ ¹®ÀÚ·Î °¡´Â ÇÔ¼ö ÀÔ´Ï´Ù. ) delete_next_word --> ¾ÕÀÇ ÇÑ ´Ü¾î¸¦ Áö¿î´Ù. delete_previous_word --> µÚÀÇ ÇÑ ´Ü¾î¸¦ Áö¿î´Ù. delete_to_eol --> Ä¿¼­ÀÇ À§Ä¡ ºÎÅÍ ÁÙ ³¡±îÁö Áö¿î´Ù. ¾Æ¸¶ ÀÌ Á¤µµ¸¸ ¹Ù²Ù¾îµµ ±×¸® ºÒÆíÇÏÁö ¾Ê°Ô ¾²½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï ´Ù. ´Ù¸¥ ±â´Éµé, °¡·É ÄÄÆÄÀÏÇÏ´Â Å°¶ó´øÁö ã±âÀÇ ´ÜÃàÅ°¶ó´øÁö µîÀ» ¹Ù²Ù½Ã·Á¸é ±×¿¡ ÇØ´çÇÏ´Â Å°¸¦ ¹Ù²Ù½Ã¸é µË´Ï´Ù. ´õ ´É·ÂÀÌ µÇ½Ã¸é ½º½º·Î ¸ÅÅ©·Î¸¦ ¸¸µé¾î¼­ tools.ini¿¡ »ðÀÔÇÏ¿© Àڱ⸸ÀÇ ±â´ÉÀ» ¿¡µðÅÍ¿¡ »ðÀÔÇÒ ¼öµµ ÀÖ½À´Ï´Ù. À§ÀÇ delete_next_wordµµ ¸ÅÅ©·Î·Î ¸¸µç ¿¹ÀÔ´Ï´Ù. ÀνºÅç½Ã Brief ¿¡µðÅÍ ¿¡¹Ä·¹À̼ÇÀ» ¼± ÅÃÇÑ ÈÄ tools.pre ȤÀº tools.ini¸¦ º¸½Ã¸é ±× ¾È¿¡ ¸ÅÅ©·Î¸¦ Á¤ ÀÇÇÑ °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÇÔ¼ö¿¡ ´ëÇÑ ¼³¸íÀ̳ª ¸ÅÅ©·Î¸¦ ¸¸µå´Â ¹æ¹ýÀº µµ¿ò¸»¿¡ ÀÚ¼¼È÷ ³ª¿À´Ï ÂüÁ¶ÇÏ½Ã±æ ¹Ù¶ø´Ï´Ù. ±×¸®°í Å°¸¦ ¹Ù²Ù½Ç ¶§ ¾î¶² ÇÔ¼öÀÇ À̸§ÀÌ ³ª¿Ô´Âµ¥ ±× ÇÔ¼ö¸¦ Àß ¸ð¸£½Ã°Ú´Ù¸é Ä¿¼­¸¦ ±× ÇÔ¼ö À̸§¿¡´Ù À§Ä¡ÇÏ°í F1Å°¸¦ ´©¸£½Ã¸é °ð¹Ù·Î Àß µÈ ¼³¸íÀ» º¸½Ç¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¸¶¿ì½º·Î´Â ¸¶¿ì½º Ä¿ ¼­¸¦ À§Ä¡ÇÏ°í ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é µµ¿ò¸»ÀÌ ³ª¿É´Ï´Ù. ½ÇÁ¦·Î ¸ðµç °ÍÀÌ ÀÌ·±½ÄÀ¸·Î µµ¿ò¸»À» º¼ ¼ö Àִµ¥ °¡·É ¼Ò½º¸¦ º¸´Ù°¡ inc¶ó´Â ¸í·É¾î°¡ ³ª¿Ô´Âµ¥ ÀÌ°ÍÀÌ ¾î¶² ¸í·É¾îÀÎÁö Àß ¸ð¸£°Ú´Ù¸é Ä¿¼­¸¦ incÀ§¿¡´Ù À§Ä¡½ÃÅ°°í ¸¶¿ì½º¸¦ ¹öÆ°À» ´©¸£°Å³ª F1Å°¸¦ ´© ¸£¸é °ð µµ¿ò¸»À» º¼ ¼ö ÀÖ½À´Ï´Ù. !!!! ÁÖÀÇÇÒ Á¡ !!!! À§ÀÇ Å°¸¦ ¹Ù²Û°ÍÀ» °è¼Ó À¯ÁöÇÏ·Á¸é ²À ¼¼À̺긦 ÇؾßÇÕ´Ï´Ù. ¸Þ ´º¿¡¼­ ¼¼À̺긦 ¼±ÅÃÇÏ´øÁö ¼¼ÀÌºê ´ÜÃàÅ°¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. ±×¸®°í ±×¹ÛÀÇ ¿¡µðÅÍ¿¡ °üÇÑ ¿É¼Çµé °¡·É È­¸é »öÀ̶ó´øÁö ÅÇÀ» ¸î Ä­ ¶Ù¿ï °ÍÀ̶ó´øÁö ÇÏ´Â °ÍÀº Options¿¡ Editor SettingsÀ» °í¸£°í À§ÀÇ Å° ¹Ù²Ù´Â °Íó·³ °ªÀ» ¹Ù²Ù¾î ÁÖ¸é µË´Ï´Ù. ** ºí·°ÁöÁ¤¿¡ °üÇÑ ÆÁ ** ºí·°À» ÁöÁ¤ÇÏ°í ºí·° Áö¿ì±â, ¹öÆÛ¿¡ º¹»çÇϱ⠰°Àº °ÍÀ» Çϴµ¥ ÀÌ·± Å°µéÀº º¼·£µå °è¿­ÀÇ Å°¿Í ºñ½ÁÇÕ´Ï´Ù. Áï ºí·°À» ÁöÁ¤ÇÏ´Â °ÍÀº shiftÅ°¸¦ ´©¸£°í Ä¿¼­ À̵¿Å°¸¦ ´©¸£¸é µÇ°í¿ä. Ä«ÇÇÇÏ´Â °Í Àº Ctrl+Ins ÀÌ°í Áö¿ì´Â °ÍÀº Ctrl+DelÀÌ°í ¹¹ ÀÌ·± °ÍÀº ´Ù °° Àºµ¥ Çϳª ÁÁÀº °ÍÀº ºí·°À» ÁöÁ¤À» ÇÒ ¶§ ÇѱÛÀÇ F4¸¦ ÁöÁ¤Çؼ­ ºí·°À» ¼³Á¤À» ÇÒ ¶§Ã³·³ ¹Ú½º¸ð¾çÀÇ ºí·°À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù´Â °Í ÀÔ´Ï´Ù. Áï ¸¶¿ì½º·Î ºí·°À» ÁöÁ¤ÇÒ ¶§ ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é ¹Ú½º¸ð¾çÀÇ ºí·°°ú ÀÏ¹Ý ÁÙ´ÜÀ§ÀÇ ºí·°À» Åä±ÛÇϸ鼭 ÁöÁ¤À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÑ ¹ø Çغ¸¼¼¿ä. Å°´Â Ctrl+B¸¦ ´©¸£¸é µÎ ÁöÁ¤¹æ ½Ä°£ÀÇ Åä±ÛÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¦¸ñ: [°­ÁÂ] MASM 6.0 »ç¿ë¹ý 3/8 ------------------------------------------------------------------------------ [MASM6.0/3] ¼Ò½º¸¦ ºôµåÇÏ´Â ¹æ¹ý.. À̹ø °­Á¿¡¼­´Â ¼Ò½º ÇÁ·Î±×·¥À» ºôµå(Build)¸¦ ÇÏ¿© ½ÇÇà ÆÄÀÏ·Î ¸¸µå´Â ¹æ¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. **** ¼Ò½º ÇÁ·Î±×·¥À» ºôµå ÇÏ´Â ¹ý **** ¼Ò½º ÇÁ·Î±×·¥À» ºôµåÇÏ´Â ¹æ¹ýÀº ÀÌ¹Ì °í±Þ¾ð¾î·Î ½ÇÇà ÆÄÀÏÀ» ¸¸ ¾îº» °æÇèÀÌ ÀÖÀ¸½Å ºÐÀº ¾Æ¸¶ ½±°Ô Çϸ®¶ó°í º¾´Ï´Ù. ±×·¯³ª ¸î°¡Áö ÁÖÀÇÇÒ Á¡ÀÌ ÀÖ°í ¶ÇÇÑ ¿©·¯ ¸ðµâ·Î µÈ ÇÁ·Î±×·¥À» ºôµåÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ Àß ¸ð¸£½Ã´Â ºÐÀÌ ÀÖÀ¸½Ç °Í °°¾Æ °£´ÜÈ÷ ¼³¸íÇØ º¸°Ú½À´Ï´Ù. 1. ÇϳªÀÇ ¼Ò½º·Î ±¸¼ºµÈ ÇÁ·Î±×·¥À» ºôµåÇÏ´Â ¹æ¹ý -->¾î¶² ¼Ò½º°¡ ÆÄÀÏ·Î ÀúÀåµÇ¾î ÀÖ´Ù°í °¡Á¤À» ÅñÐܶ§ ±×°ÍÀ» ¾î¼Àºí À» ½ÃÅ°±â Àü¿¡ ¸ÕÀú ÇØÁÖ¾î¾ß µÉ °ÍÀº ¾î¼ÀºíÇÒ ÇÁ·Î±×·¥ÀÇ Å¸ÀÔ À» Á¤ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸ÅÁò 6.0¿¡¼­ Á¦°øÇϴ ŸÀÔÀº ¿©·¯°¡Áö°¡ Àִµ¥, °¡·É Å©°Ô ³ª´©¾î¼­ µµ½º¿ë ½ÇÇàÆÄÀÏ°ú OS¿ë ½ÇÇàÆÄÀÏÀÌ Àִµ¥ °¢°¢ ½ÇÇàÆÄÀÏÀÇ ÇüÅ°¡ ´Þ¶óÁö±â ¶§¹®¿¡ ÀÌ·¯ÇÑ °ÍµéÀ» Á¤ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ µµ½º¿ë ½ÇÇà ÆÄÀÏÁß¿¡¼­µµ È®ÀåÀÚ°¡ EXE ÀÎ °Íµµ ÀÖ°í COMÀÎ °Íµµ Àִµ¥ ÀÌ µÑ ¿ª½Ã ½ÇÇàÆÄÀÏ¿¡ À־ Â÷ÀÌ°¡ ³ª±â ¶§¹®¿¡ ÀÌ·¯ÇÑ Å¸ÀÔµéÀ» Á¤ÇØ ÁÖ´Â °úÁ¤ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ±×·¡¼­ ¾î¼ÀºíÇÒ ÇÁ·Î ?ÅÜŸÀÔÀ» Á¤ÇØÁÖ·Á¸é.. (1) Options¸Þ´º¿¡¼­ Build OptionsÀ» ¼±ÅÃÇÕ´Ï´Ù. (2) Set Main Language¸¦ ¼±ÅÃÇÏ¿© assembler¸¦ ¼±ÅÃÇÕ´Ï´Ù. (3) Set Initial Build OptionsÀ» ¼±ÅÃÇÏ¿© ¾î¼ÀºíÇÒ ÆÄÀÏÀÇ Å¸ÀÔÀ» Á¤ÇÕ´Ï´Ù. ¸¸¾à EXEÆÄÀÏÀ̶ó¸é DOS EXE¸¦ COM ÆÄÀÏÀ̸é DOS COM À» ¼±ÅÃÇÏ¸é µÇ°Ú½À´Ï´Ù. ÇÁ·Î±×·¥ÀÇ Å¸ÀÔ°ú ÇÔ²² °í·ÁÇØ¾ß ÇÒ °ÍÀº ½ÇÇàÆÄÀÏÀ» ¾î¶² ¹öÁ¯À¸·Î ¸¸µå´Â°¡¸¦ °áÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù. ¿©±â¼­ ¹öÁ¯À̶óÇÔÀº Release ȤÀº Debug¹öÁ¯À» ¸»ÇÏ´Â °ÍÀ¸·Î µÎ ¹öÁ¯ÀÇ Â÷ÀÌÁ¡À» ¸»ÇÏÀÚ¸é5 Release ¹öÁ¯Àº Debug¹öÁ¯°ú´Â ´Þ¸® ½ÇÇà ÆÄÀϳ»¿¡ µð¹ö±× Á¤º¸¸¦ Æ÷ÇÔÇÏÁö ¾Ê ½À´Ï´Ù. ¸» ±×´ë·Î Release¹öÁ¯Àº ÇÁ·Î±×·¥ÀÌ ¹ö±×°¡ ¾ø¾î¼­ °ð ¹ßÇ¥(?) Çصµ µÉ ¶§ Release¹öÁ¯À¸·Î ÇÁ·Î±×·¥À» ºôµåÇÏ´Â °ÍÀÔ´Ï´Ù. ¸¸¾à ¾î¶² ¿¡¶ó°¡ À־ °è¼Ó µð¹ö±ëÀ» ÇÑ´Ù¸éÀº Debug¹öÁ¯À¸·Î ºôµå¸¦ ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¿Ö³ÄÇϸé Debug¹öÁ¯À¸·Î ÇÁ·Î±×·¥À» ºôµåÇϸé ÄÚµåºä¶ó´Â µð¹ö°ÅÀÇ ±â´ÉÀ» ½ÊºÐ ¹ßÈÖÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯³ª Debug¹öÁ¯Àº ½ÇÇà ÆÄÀϳ»¿¡ µð¹ö±× Á¤º¸°¡ µé¾î°¡±â ¶§¹®¿¡ ½ÇÇàÆÄÀÏÀÌ ´õ Ä¿Áö°Ô µË´Ï´Ù. ±×·¯¹Ç·Î »óȲ¿¡ ¸Â°Ô ¹öÁ¯À» ¼±ÅÃÇØ¾ß ÇÏ°Ú½À´Ï´Ù. µÎ ¹öÁ¯À» ¼±ÅÃÇÏ´Â °ÍÀº À§ÀÇ Options ¸Þ´ºÀÇ Build Options¿¡¼­ Á¤ÇÒ ¼ö ÀÖ½À ´Ï´Ù. 2. ¿©·¯°³ÀÇ ¸ðµâ·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥À» ºôµåÇÏ´Â ¹ý -->ÇϳªÀÇ ¼Ò½º·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥°ú´Â ´Þ¸® ¿©·¯°³ÀÇ ÆÄÀÏ·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥À» ºôµåÇÒ ¶§´Â Program List¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. Program List¶õ ¾î¶² ÇÁ·Î±×·¥À» ±¸¼ºÇÏ´Â ¼Ò½º ÆÄÀÏÀÇ ¸®½ºÆ®¸¦ ¸»ÇÏ´Â °ÍÀ¸·Î PWB´Â À̸¦ °¡Áö°í make fileÀ» ¸¸µé°Ô µË´Ï´Ù. make fileÀ̶õ °í±Þ¾ð ¾î¿¡¼­ ÇÁ·ÎÁ§Æ® ÆÄ5ÀÏ°ú À¯»çÇÑ ¿ªÇÒÀ» ÇÏ´Â ÆÄÀÏ·Î È®ÀåÀÚ°¡ .MAKÀÔ ´Ï´Ù. ¾Æ¸¶ º¼·£µå C°°Àº µ¥¼­ ÇÁ·ÎÁ§Æ® ÆÄÀÏÀ» ¸¸µé¾îº» °æÇèÀÌ ÀÖÀ¸½Å ºÐÀº ½±°Ô ÇÁ·Î±×·¥ ¸®½ºÆ®¸¦ ÀÛ¼ºÇÏ½Ç °ÍÀ̶ó°í º¾´Ï´Ù. ±×·³ ½ÇÁ¦·Î ¾ê¸¦ µé¸é¼­ ¿©·¯°³ÀÇ ¸ðµâ·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥À» ºôµå ÇÏ´Â ¹æ¹ýÀ» º¸µµ·Ï ÇսôÙ. ´ÙÀ½ÀÇ ¿¹Á¦ ÇÁ·Î±×·¥Àº È­¸é¿¡ Hello, world¸¦ Âï´Â ÇÁ·Î±×·¥À¸·Î HELLO.ASM°ú PUTSTR.ASM µÎ°³ÀÇ ÆÄÀÏ·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ¸Þ ÀÎ ¸ðµâÀÎ HELLO.ASM¿¡¼­ ¿ÜºÎ ÇÔ¼öÀÎ PutStrºÒ·¯¼­ È­¸é¿¡ ¹®ÀÚ¸¦ »Ñ ¸®°Ô µÇ¾î ÀÖ½À5´Ï´Ù. ¼Ò½ºÀÇ °÷°÷¿¡ ¸ÅÁò 5.1¿¡¼­´Â »ý¼ÒÇÑ °ÍµéÀÌ ÀÖ´Â µ¥ ÃßÈÄ °­Á¸¦ ÅëÇؼ­ ¼³¸íÇϱâ·Î ÇÏ°í ÀÏ´ÜÀº ¼Ò½º¸¦ »ìÆ캾½Ã´Ù. ¸ÞÀÎ ¸ðµâ - HELLO.ASM ; HELLO.ASM defines a string and calls the procedure PutStr to ; display the text. PutStr is in a separate module PUTSTR.ASM .MODEL small, c ; Tell assembler PutStr's argument type and how to call PutStr: PutStr PROTO pMsg:PTR BYTE .DOSSEG .STACK .DAT5A msg BYTE "Hello, world.", 13, 10, 0 ; null-terminated ; string .CODE .STARTUP ; Initialize data and stack ; segments INVOKE PutStr, ADDR msg ; call external procedure .ENDW ret PutStr ENDP END ±×·¯¸é À§¾ñÅܼҽº¸¦ °¢°¢ HELLO.ASM°ú PUTSTR.ASM·Î ÀúÀåÀ» ÇÕ´Ï´Ù. ÀÚ ÀÌÁ¦ºÎÅÍ À§ÀÇ ÇÁ·Î±×·¥À» ºôµåÇÏ´Â ¹æ¹ýÀ» ´Ü°è¸¦ ¹â¾Æ °¡¸é¼­ »ìÆ캸µµ·Ï ÇÏÁÒ. (1) ºôµåÇÒ ÇÁ·Î±×·¥ÀÇ Å¸ÀÔÀ» Á¤ÇÑ´Ù. --> À§¿¡¼­ ¼³¸íÇßµçÀÌ ¸Þ´ºÀÇ OptionsÀÇ Build OptionsÀ» ¼±Åà ÇÏ¿© Set Main LanguageÀ» ¼±ÅÃÇÏ¿© assembler¸¦ ¼±ÅÃÀ» ÇÏ°í Set Initial Build OptinsÀ» ¼±ÅÃÇÏ¿© DOS EXE¸¦ ¼±ÅÃÀ» ÇÕ´Ï ´Ù. ¹öÁ¯Àº ¾ÆÁ÷ µð¹ö±×°¡ ¾ÈµÇ¾ú´Ù°í º¸°í Debug¹öÁ¯À» ¼±Åà À» ÇÕ´Ï´Ù. (2) Prog5ram List¸¦ ¸¸µç´Ù. --> Make¸Þ´º¿¡¼­ Set Program List¸¦ ¼±ÅÃÀ» ÇÕ´Ï´Ù. ±×·¯¸é ´ÙÀÌ ¾Ë·Î±× ¹Ú½º°¡ ³ª¿À´Âµ¥ ¸ÞÀÎ ÇÁ·Î±×·¥ÀÇ ÆÄÀÏ À̸§À» Àû½À´Ï ´Ù.(HELLO). ±×·¯¸é PWB°¡ HELLO.MAK°¡ ÀÖ´Ù¸é ±× ÆÄÀÏÀ» ·Îµå ÇÏ°Ô µË´Ï´Ù. ¾øÀ» ¶§´Â »õ·Î¿î makefileÀ» ¸¸µé°ÍÀÌ³Ä°í ¹°¾î º¸´Âµ¥ Yes¸¦ ¼±ÅÃÀ» ÇÕ´Ï´Ù. ±×·¯¸é ´ÙÀÌ¾Ë·Î±× ¹Ú½º°¡ ³ª ¿À´Âµ¥ °Å±â¿£ ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀϵéÀÇ ¸®½ºÆ®°¡ ³ª ¿À°Ô µË´Ï´Ù. °Å±â¼­ ÇÁ·Î±×·¥À» ±¸¼ºÇÏ´Â ÆÄÀϵé¾ñ¹Ü¼±ÅÃÇÏ¸é µË´Ï´Ù. À§ÀÇ ¿¹¿¡¼­´Â HELLO.ASM, PUTSTR.ASMÀÌ µÇ°ÚÁÒ. ¼±ÅÃÀÌ ³¡³µ À¸¸é Save List¸¦ ¼±ÅÃÇÕ´Ï´Ù. ±×·¯¸é ÀÚµ¿ÀûÀ¸·Î PWB°¡ HELLO .MAKÀ̶ó´Â makefileÀ» ¸¸µé°Ô µË´Ï´Ù. (3) ÇÁ·Î±×·¥À» ºôµåÇÑ´Ù. --> Set Program List¸¦ ¼±ÅÃÇÏ¿© È®ÀåÀÚ°¡ .MAKÀÎ makefileÀ» ºÒ·¯ ¿É´Ï´Ù. À§Ã³·³ Program List¸¦ ¹Ù·Î ¸¸µåÈÄ¸é ´Ù½Ã ºÎ¸¦ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. makefileÀ» ·ÎµåÇÑ ÈÄ5¿¡ ¿©·¯ ¿É¼ÇµéÀ» Á¤ÇÕ ´Ï´Ù. MASM ¿É¼Çµµ ÀÖ°í BROWSE ¿É¼Ç, LINK, NMAKE¿É¼Ç µîÀÌ ÀÖÁö¸¸ óÀ½¿£ µðÆúÆ® ¿É¼ÇÀ¸·Î ºôµå¸¦ ÇÏ°í ³ªÁß¿¡ ÇÊ¿ä°¡ ÀÖ´Ù¸é ÀûÀýÇÏ°Ô ¿É¼ÇµéÀ» Á¤ÇÕ´Ï´Ù. ¿É¼ÇÀ» Á¤ÇÑÈÄ¿¡´Â MAKE ¸Þ´ºÀÇ Build ȤÀº Rebuild AllÀ» ¼±ÅÃÇÏ¿© ÇÁ·Î±×·¥À» ºôµå ÇÕ´Ï´Ù. ¾Æ¹« ¿¡¶ó°¡ ¾øÀ¸¸é ½ÇÇà ÆÄÀÏÀÌ ¸¸µé¾îÁý´Ï´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¦¸ñ: [°­ÁÂ] MASM 6.0 »ç¿ë¹ý 4/8 ------------------------------------------------------------------------------ [MASM6.0/4] ºê¶ó¿ìÁ®, ÄÚµåºä »ç¿ë¹ý.. ±×·³ µð¹ö±ë¿¡ À¯¿ëÇÑ ¼Ò½º ºê¶ó¿ìÁ®¿Í ÄÚµåºäÀÇ °£´ÜÇÑ »ç¿ë ¹ý¿¡ ¾Ë¾Æº¸µµ·Ï ÇսôÙ. **** ¼Ò½º ºê¶ó¿ìÁ®¿Í ÄÚµåºäÀÇ °£´ÜÇÑ »ç¿ë¹ý **** 1. ¼Ò½º ºê¶ó¿ìÁ®ÀÇ »ç¿ë¹ý -->¼Ò½º ºê¶ó¿ìÁ®(Source Browser)´Â ÇÔ¼ö¿Í º¯¼öµéÀÇ °ü°è¿¡ °üÇÑ Á¤º¸¸¦ º¸¿©ÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. Áï ÇÔ¼ö¿Í º¯¼öµéÀÇ Á¤ÀÇ(definition)¿Í ±×°ÍµéÀÌ ¾îµð¼­ ÂüÁ¶(reference)µÇ¾ú´Â Áö¸¦ È­¸é¿¡ º¸¿©ÁÝ´Ï´Ù. ½ÇÁ¦·Î »ç¿ëÇØ º¸½Ã¸é ´õ¿í ÀÌÇØ°¡ ½¬¿ï °ÍÀÌ°í¿ä ¿Â¶óÀÎ ÇïÇÁ¿¡ ¾ÆÁÖ Àß³ª¿ÍÀÖÀ¸¹Ç·Î ±×°ÍÀ» Âü Á¶Çϸé ÁÁÀ»°ÍÀÔ´Ï´Ù. (¹°·Ð Á¶±ÝÀÇ ¿µ¾î ½Ç·ÂÀÌ ÇÊ¿äÇÏÁÒ.) ¼Ò½º ºê¶ó¿ìÁ®´Â ¸Þ´ºÀÇ Browse ¸í·ÉÀ» ÅëÇؼ­ ÀÌ¿ëÇÒ ¼ö ÀÖ ´Âµ¥ ¸ÕÀú À̸¦ ÀÌ¿ëÇÏ·Á¸é µ¥ÀÌŸ º£À̽º¸¦ Á¤ÀÇÇÏ´Â Áغñ °¡ ÇÊ¿äÇÕ´Ï´Ù. µ¥ÀÌŸ º£À̽º¸¦ Á¤ÀÇÇÏ·Á¸é.... (1) MAKE¸Þ´º¿¡¼­ Set Program List¸¦ ¼±ÅÃÀ» ÇÏ¿© program list¸¦ ¸¸µì´Ï´Ù. ÀÌ program list´Â µ¥ÀÌŸ º£À̽º¿¡ ÇÊ¿äÇÏ°Ô µË´Ï´Ù. (2) ¸Þ´ºÀÇ Options¿¡¼­ Browse OptionsÀ» ¼±ÅÃÇÕ´Ï´Ù. °Å±â ¼­ Generate Browse InformationÀ» ²À ¼±ÅÃÀ» ÇØ¾ß ÇÕ´Ï ´Ù. (3) MAKE ¸Þ´º¿¡¼­ ºôµå¸¦ Çϸé È®ÀåÀÚ°¡ .BSC(Browser Source Cache)ÀÎ ÆÄÀÏÀÌ »ý±â´Âµ¥ ÀÌ ÆÄÀÏÀº ºê¶ó¿ìÁ®¿¡ ÀÌ¿ëµÇ´Â ÀÚ·á°¡ ÀúÀåµÇ¾î ÀÖ½À´Ï´Ù. À§¿Í °°ÀÌ µ¥ÀÌŸ º£À̽º¸¦ Á¤ÀÇÇÏ¸é ´ÙÀ½°ú Browse¸Þ´º¿¡¼­ ´ÙÀ½°ú °°Àº ¸í·É¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. (1) Goto Definition --> ÀÌ ¸í·É¾î´Â º¯¼ö³ª ÇÔ¼ö, ¸ÅÅ©·Î µîÀÌ Á¤ÀÇµÈ °÷À¸·Î Ä¿¼­¸¦ ¿Å°Ü ÁÝ´Ï´Ù. ¸ÕÀú ´ÙÀÌ¾Ë·Î±× ¹Ú½º¿¡ º¯¼ö,ÇÔ ¼ö, ¸ÅÅ©·ÎµéÀÇ À̸§ÀÌ ³ª¿À´Â µ¥ ±× Áß Ä¿¼­¸¦ ¿Å±æ °÷À» ¼±ÅÃÇÏ°í O.K ¹öÆ°À» ¼±ÅÃÇÏ¸é °ð¹Ù·Î ±×°ÍÀÌ Á¤ ÀÇµÈ ¼Ò½º·Î Ä¿¼­¸¦ ¿Å°Ü ÁÝ´Ï´Ù. ¾ÆÁÖ ±ä ¼Ò½º¸¦ º¸°Å ³ª ¿©·¯°³ÀÇ ÆÄÀÏ·Î µÈ ¼Ò½º¸¦ º¼ ¶§ ÀÌ ¸í·ÉÀ» »ç¿ëÇÏ ¸é ¾î¶² ÇÔ¼ö³ª, ¸ÅÅ©·Î, º¯¼ö°¡ Á¤ÀÇµÈ °÷À» ½±°Ô ã ¾Æ º¼ ¼ö ÀÖ½À´Ï´Ù. (2) Goto Reference -->ÀÌ ¸í·É¾î´Â ÇÔ¼ö³ª º¯¼ö, ¸ÅÅ©·Î µîÀÌ ÂüÁ¶µÈ ÆÄÀÏ°ú ÁÙ¹øÈ£µéÀ» º¸¿© ÁÝ´Ï´Ù. (3) View Relationships -->ÀÌ ¸í·É¾î´Â ÇÁ·Î±×·¥¿¡ °ü·ÃµÈ ¿©·¯ Á¤º¸¸¦ ÀÚ¼¼ÇÏ°Ô º¸¿©ÁÝ´Ï´Ù. ÀÌ ¸í·É¾î¸¦ »ç¿ëÇÏ´Â µ¥´Â ´ÙÀ½°ú °°Àº ÀýÂ÷°¡ ÇÊ¿äÇÕ´Ï´Ù. 1. ¿ÀºêÁ§Æ®¸¦ ¼³Á¤ÇÑ´Ù. -->¿©±â¼­ ¿ÀºêÁ§Æ®¶õ °¢Á¾ ½Éº¼(ÇÔ¼ö, º¯¼ö..)¸¦ ¸»ÇÕ ´Ï´Ù. 2. ¿ÀºêÁ§Æ®¿¡ Àû¿ëµÉ ¿ÀÆÛ·¹À̼ÇÀ» Á¤ÇÑ´Ù. -->¿ÀÆÛ·¹À̼ÇÀº ¿©·¯ °¡Áö°¡ ÀÖ´Â µ¥ ¿©±â¼­ ´Ù ¼³¸íÀ» ÇÏ´Â °ÍÀº ¾î·Á¿ì¹Ç·Î ½ÇÁ¦ÀûÀ¸·Î Çѹø »ç¿ëÇغ¸½Ã¸é ½±°Ô ÀÌÇظ¦ ÇϽø®¶ó º¾´Ï´Ù. 3. º¸¿©ÁÙ °ÍµéÀ» Á¤ÇÑ´Ù. -->º¸¿©ÁÙ °ÍÀ̶óÇÔÀº ÇÔ¼ö, ¸ÅÅ©·Î, º¯¼öµîÀ» ¸»ÇÏ´Â µ¥ ¿¹¸¦ µé¾î¼­ 2¹øÀÇ ¿ÀÆÛ·¹À̼ÇÀ» USE¸¦ ¼±ÅÃÇÏ¸é ¾î¶² ÇÔ¼ö³ª ¸ÅÆ®·Î µîÀÌ »ç¿ëÇÑ °ÍµéÀ» Á× ³ª¿­ÇÏ°Ô µÇ¾î Àִµ¥ ¿©±â¼­ º¸¿©ÁÙ °ÍÀ» ÇÔ¼ö¿Í º¯¼ö¸¸À» ¼± ÅÃÇÏ¸é ±× ÇÔ¼ö°¡ »ç¿ëÇÑ ÇÔ¼ö¿Í º¯¼ö¸¸À» º¸¿©ÁÖ°Ô µË´Ï´Ù. (4) List References --> ÀÌ ¸í·É¾î´Â ÇÔ¼ö, ¸ÅÅ©·Î, º¯¼ö, ½Éº¼ µîÀÌ ¾î¶² ÆÄÀÏ ¾î¶² ÇÔ¼ö¿¡ ÀÇÇؼ­ ÂüÁ¶µÇ¾ú³ª¸¦ Âß ³ª¿­ÇÏ°Ô µË´Ï´Ù. (5) Call Tree -->ÀÌ ¸í·É¾î´Â ÇÔ¼ö°£ÀÇ °ü°è, Áï ¾î¶² ÇÔ¼ö°¡ ¾î¶² ´Ù¸¥ ÇÔ¼ö¸¦ ºÎ¸£´Â °¡¸¦ Æ®¸®±¸Á¶·Î º¸¿©ÁÝ´Ï´Ù. ÀÌ»ó ¼Ò½º ºê¶ó¿ìÁ® »ç¿ë¹ýÀ» °£´ÜÈ÷ ¾Ë¾Æ º¸¾Ò´Âµ¥ ½ÇÁ¦·Î Çѹø ½áº¸½Ã¸é ½±°Ô ±× ±â´ÉÀ» ÀÌÇØÇϽø®¶ó º¾´Ï´Ù. ±×·³ ÄÚµåºä¶ó´Â µð¹ö°Å¿¡ ´ëÇؼ­ °£´ÜÈ÷ ¾Ë¾Æº¸µµ·Ï ÇÕ´Ï´Ù. **** ÄÚµåºäÀÇ °£´ÜÇÑ »ç¿ë¹ý **** ¸ÕÀú ÄÚµåºä¸¦ »ç¿ëÇϱâ Àü¿¡... ÄÚµåºä¸¦ »ç¿ëÇÏ·Á¸é Àú¹ø °­Á¿¡¼­ ¸»ÇßµíÀÌ ÁغñÇØ¾ß ÇÒ °ÍÀÌ ÀÖ½À´Ï´Ù. Áï ºôµå¸¦ ÇÒ ¶§ Debug ¹öÁ¯À¸·Î ÇÁ·Î±×·¥À» ºôµåÇØ¾ß ÇÕ´Ï´Ù. Àؾî¹ö¸®½Å ºÐÀ» À§ÇÏ¿© ´Ù½Ã ¸»¾¸ÇØ µå¸®¸é Options ¸Þ´º ¿¡ Build OptionsÀ» ¼±ÅÃÀ» Çؼ­ Debug¹öÁ¯À» ¼±ÅÃÀ» ÇÏ½Ã¸é µË´Ï ´Ù. ±×·¯¸é ½ÇÇàÆÄÀÏ¿¡ Debug Á¤º¸°¡ µé¾î°¡´Âµ¥ ÄÚµåºä´Â À̸¦ ÀÌ ¿ëÇؼ­ ¿©·¯°¡Áö Á¤º¸¸¦ Á¦°øÇØ ÁÝ´Ï´Ù. ¹°·Ð º¸Åë EXEÆÄÀϵµ ÄÚµå ºä¸¦ ÀÌ¿ëÇÒ ¼ö´Â ÀÖÁö¸¸ ¼Ò½º ·¹º§¿¡¼­ÀÇ µð¹ö±ëÀÌ ¾ÈµÇ¹Ç·Î ÄÚµå ºä¸¦ Àß »ç¿ëÇϽ÷Á¸é Debug¹öÁ¯À¸·Î ºôµåÇÏ½Ã°í »ç¿ëÇϽô °ÍÀÌ ÁÁ°Ú½À´Ï´Ù. ÄÚµåºä°¡ º¸¿©ÁÖ´Â °Íµé... RUN ¸Þ´º¿¡¼­ Debug ¸í·É¾î¸¦ ¼±ÅÃÇÏ¸é °ð¹Ù·Î ÄÚµåºä È­¸éÀ¸·Î ³Ñ¾î°¡´Â µ¥ È­¸é¿¡ ÄÚµåºä°¡ º¸¿©ÁÖ´Â °ÍµéÀº ´ÙÀ½°ú °°½À´Ï´Ù. ¸ÕÀú ÇÁ·Î±×·¥À» º¸¿©ÁÖ´Â µ¥ ´ÙÀ½°ú °°Àº ¼¼°¡Áö ¹æ¹ýÀ¸·Î º¸¿© ÁÙ ¼ö ÀÖ½À´Ï´Ù. ( OptionsÀÇ Source Window¸¦ ¼±Åà ) 1. ¸ÅÁò ¼Ò½º ÄÚµå (Source Code) -->ÀÌ°ÍÀº ±âº» ¼±Åà »çÇ×À¸·Î PWB¿¡¼­ § ¼Ò½º Äڵ带 ±×´ë·Î º¸ ¿©ÁÝ´Ï´Ù. 2. µð½º¾î¼ÀºíµÈ ¼Ò½º ÄÚµå -->¼Ò¼­¿Í °°Àº µð½º¾î¼Àºí·¯¿Í °°ÀÌ µð½º¾î¼ÀºíµÈ ¾î¼Àºí¸® ÄÚµå ¸¦ º¸¿©ÁֹǷΠ1¹ø°ú °°ÀÌ ½Éº¼µéÀ» º¼ ¼ö ¾ø°Ô µË´Ï´Ù. 3. 1°ú 2ÀÇ È¥ÇÕ -->Áï ¸ÅÁò ¼Ò½º ÄÚµå¿Í ÇÔ²² ±× ¼Ò½º Äڵ尡 µð½º¾î¼ÀºíµÈ Äڵ尡 °°ÀÌ ³ª¿À°Ô µË´Ï´Ù. ÀÌ °æ¿ì´Â ¸ÅÅ©·Î³ª Áö½Ã¾îµîÀÌ ¾î¶»°Ô ±â °è¾î·Î ¹Ù²î¾ú´ÂÁö »ìÆì º¼¶§ ÁÁ½À´Ï´Ù. À§ÀÇ ÇÁ·Î±×·¥À» º¸¿©ÁÖ´Â °Í »Ó¸¸ ¾Æ´Ï¶ó µð¹ö±ë¿¡ À¯¿ëÇÑ ¿©·¯Á¤ º¸µéÀ» È­¸é¿¡ º¸¿© ÁÝ´Ï´Ù. Áï ¸Þ¸ð¸®, ·¹Áö½ºÅÍ, Áö¿ª º¯¼ö µîÀ» º¸¿©Áִµ¥ ÀÌ´Â ÄÚµåºä ¸Þ´º ¿¡¼­ View ¸í·É¾î¸¦ ¼±ÅÃÇÏ¿© º¸°í ½ÍÀº °Í¸¸ º¼ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ±âŸ ¿©·¯ ±â´ÉÀ» »ç¿ëÇÏ´Â ¹æ¹ý - Watch¸¦ »ç¿ëÇϰųª, Go, Trace Step ÇÏ´Â ¹æ¹ý, Break Point¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ý µîÀº ÀÏ¹Ý Åͺ¸ °è¿­ÀÌ ³ª º¼·£µå °è¿­ÀÇ °í±Þ¾ð¾î¿¡¼­ Á¦°øÇÏ´Â °Í°ú ºñ½ÁÇϹǷΠ»ý·«Çϱâ·Î ÇÕ´Ï´Ù. ´ÙÀ½ °­ÁºÎÅÍ´Â ÀÏ¹Ý È¯°æ »ç¿ë¹ýÀÌ ¾Æ´Ñ ¾ð¾î»óÀ¸·Î ¸ÅÁò 6.0¿¡¼­ ³ª¾ÆÁø Á¡¿¡ ´ëÇØ »ìÆ캸µµ·Ï ÇսôÙ. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¦¸ñ: [°­ÁÂ] MASM 6.0 »ç¿ë¹ý 5/8 ------------------------------------------------------------------------------ [MASM6.0/5] °í±Þ¾ð¾îÀû Áö½Ã¾îµé.. ¸ÕÀú °­Á°¡ ´Ê¾îÁø Á¡¿¡´ëÇØ Á˼ÛÇÏ°Ô »ý°¢ÇÕ´Ï´Ù. ±×·³ ¿ä¹ø°­Á ¿¡ ¼­´Â MASM 6.0¿¡¼­ ȹ±âÀûÀ¸·Î ³ª¾ÆÁ³´Ù°í ÇÒ¼ö ÀÖ´Â °í±Þ¾ð¾îÀû ÀÎ Áö½Ã¾îµé¿¡ ´ëÇØ ¼³¸íÀ» Çغ¸°Ú½À´Ï´Ù. ÀÌ ±â´ÉÀ¸·Î ¸»¹Ì¾Ï¾Æ ¾î ¼À ÇÁ·Î±×·¡¹ÖÀÌ ÇÑ°á ÆíÇØÁ³À¸¸ç ¼Ò½º¸¦ º¸´Â °ÍÀÌ ¸Å¿ì ½¬¾îÁø, ±×¾ß¸»·Î MASM6.0¿¡¼­ °¡Àå ¸¾¿¡ µå´Â º¯È­ÀÏ °ÍÀÔ´Ï´Ù. °£´ÜÇÏ°Ô ±â´ÉÀ» ¼³¸íÀ» ÇÏÀÚ¸é ¸¶Ä¡ °í±Þ¾ð¾î(ƯÈ÷ C)ÀûÀÎ ¸í·É¾î¸¦ Á¦°øÇÏ°Ô µÈ °ÍÀÔ´Ï´Ù. Áï while, if, else, repeat µîÀÇ ±â´É°ú ºñ½ÁÇÑ ±â´ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô µÈ °ÍÀÔ´Ï´Ù. ±×·³ Çϳª ÇϳªÀÇ ±â´ÉµéÀ» »ìÆì º¸±â·Î ÇսôÙ. 1. ºñ±³ ÆÇ´Ü Áö½Ã¾î -->ºñ±³ ÆÇ´Ü Áö½Ã¾î·Î´Â .IF, .ELSEIF, .ELSE Áö½Ã¾î°¡ ÀÖ½À´Ï´Ù. ±¸¹®À» »ìÆ캸¸é.. .IF Á¶°Ç1 ¸í·É¹® [.ELSEIF Á¶°Ç2 ¸í·É¹®] [.ELSE ¸í·É¹®] .ENDIF ¿©±â¼­ []´Â ±× ¾È¿¡ ÀÖ´Â °ÍÀº »ý·«µÉ ¼ö ÀÖÀ½À» ¸»ÇÕ´Ï ´Ù. ¿¹¸¦ µé¾î¼­ »ìÆ캸¸é.. ¿¹Á¦) .IF cx == 20 mov dx, 20 .ELSE mov dx, 30 .ENDIF ¸¸¾à À§¿Í °°Àº ÇÁ·Î±×·¥Àº ½ÇÁ¦·Î ¾î¼À ¸í·É¾î·Î ¹Ù²ð ¶§ ´ÙÀ½°ú °°ÀÌ ¹ø¿ªµË´Ï´Ù. .IF cx == 20 cmp cx, 014h ; À§ÀÇ °í±Þ¾ð¾îÀû jne @c0001 ; Áö½Ã¾î°¡ ÇÁ·Î¼¼¼­ mov dx, 20 ; ¸í·É¾î·Î ¹Ù²ï ÄÚµå .ELSE jmp @c0003 ; "" @c0001: mov dx, 30 ; "" .ENDIF @c0003: ºñ±³¿¡ º¸½Ã¸é ¾Æ½Ã°ÚÁö¸¸ °í±Þ ¾ð¾îÀûÀÎ Áö½Ã¾î¸¦ »ç¿ëÇؼ­ ÇÁ ·Î±×·¡¹ÖÀ» Çϸé ÈξÀ ÆíÇÏ¸ç º¸±âµµ ½¬¿òÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï ´Ù. 2. ·çÇÁ Áö½Ã¾î -->°í±Þ ¾ð¾î¿¡¼­ ó·³ ·çÇÁ¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â »õ·Î¿î Áö½Ã¾î°¡ »ý°å ´Âµ¥, °í±Þ¾ð¾îÀÇ WHILE¹° °°Àº .WHILE, .ENDW, REPEAT¹®ÀÇ ¿ªÇÒ À» ÇÏ´Â .REPEAT, .UNTIL, .REPEAT, .UNTILCX µîÀÌ ÀÖ½À´Ï´Ù. ±×·¯ ³ª, ÀÌ·± »õ·Î¿î Áö½Ã¾î¸¦ »ç¿ëÇÔ¿¡ À־ »õ°ÜµÎ¾î¾ß ÇÒ °ÍÀÌ ÀÖ ´Âµ¥.. 1. À§ÀÇ Áö½Ã¾îµéÀº »õ·Î¿î ¸í·É¾î°¡ ¾Æ´Ï¶ó Àû´çÇÏ°Ô ÇÁ·Î¼¼¼­ ¸í ·É¾îµé·Î ¹Ù²î¾îÁö´Â °ÍÀÔ´Ï´Ù. 2. À§ÀÇ ·çÇÁ Áö½Ã¾îµéÀº Á¶°ÇÀ» °¡Áö°í ÆÇ´ÜÇϱ⠶§¹®¿¡ ºÎÈ£ÀÖ´Â µ¥ÀÌŸÀÇ ¼±¾ð¿¡ ÁÖÀǸ¦ ÇØ¾ß ÇÕ´Ï´Ù. 2¹øÀ» ºÎ°¡ ¼³¸íÀ» ÇÏÀÚ¸é, Á¶°ÇÀ» î¼Àºí· Æò°¡ÇÔ¿¡ À־ ±× Á¶°Ç¿¡ ÀÖ´Â ¿ÀÆÛ·£µå°¡ ºÎÈ£°¡ Àִ°¡ÀÇ ¿©ºÎ¸¦ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù.±× °ÍÀ» È®½ÇÈ÷ ÇØÁÖÁö ¾ÊÀ¸¸é ¿¹»óÇÏÁö ¾ÊÀº °á°ú°¡ ³ª¿Ã ¼ö Àֱ⠶§ ¹®ÀÔ´Ï´Ù. ±¸Ã¼ÀûÀ¸·Î Á¶°ÇÀÌ À½¼ö¸¦ ´ã°í ÀÖ´Â ¸Þ¸ð¸®¸¦ ÂüÁ¶ÇÏ°í ÀÚ ÇÒ¶§´Â ±× ¸Þ¸ð¸®¸¦ ÇÒ´çÀ» ÇÒ¶§ »õ·Î»ý±ä Áö½Ã¾îÀÎ SBYTE (signed bytes), SWORD (signed words), SDWORD (signed double words)¸¦ »ç¿ëÇØ¾ß Çϰųª PTR ¿ÀÆÛ·¹ÀÌÅ͸¦ ½á¾ß ÇÕ´Ï´Ù. 2.1 .WHILE ¹® -->.WHILE¹®À» ±¸ÇöÇÏ·Á¸é µÎ Áö½Ã¾î .WHILE, .ENDWÀ» »ç¿ëÇÕ´Ï´Ù. ¿©±â¼­ .ENDWÀº WHILE¹®ÀÇ ³¡À» ¾Ë¸®´Â µ¥ ¾²ÀÔ´Ï´Ù. ±¸¹®) .WHILE Á¶°Ç ¸í·É¹® .ENDW ÇÑ°¡Áö ¿¹¸¦ µé¾îº¾½Ã´Ù. ´ÙÀ½ ¿¹Á¦´Â ÇÑ ¹öÆÛ¿¡¼­ ´Ù¸¥ ¹öÆÛ±î Áö µ¥ÀÌŸ¸¦ Ä«ÇÇÇÏ´Â °ÍÀε¥ µ¥ÀÌŸÀÇ ³¡À» ³ªÅ¸³»´Âµ¥ ´Þ·¯ ¸¶Å©($)°¡ »ç¿ëµË´Ï´Ù. .DATA buf1 BYTE "This is a string", '$' buf2 BYTE 100 DUP (?) .CODE sub bx, bx ;BX¸¦ 0À¸·Î .WHILE (buf1[BX] != '$') mov al, buf[bx] ; Çѹ®ÀÚ¸¦ ÀÐÀ½ mov buf2[bx], al ; buf2¿¡ Ä«ÇÇ inc bx ; ´ÙÀ½ ¹®ÀÚ .ENDW 2.2 .REPEAT ¹® -->.REPEAT¹®Àº C¿¡¼­ do¹®, ÆĽºÄ®¿¡¼­ repeat¹®°ú °°Àº ¿ªÇÒÀ» ÇÏ´Â °ÍÀÔ´Ï´Ù. Áö½Ã¾î´Â .REPEAT °ú .UNTIL(¶Ç´Â UNTILCXZ)À» »ç¿ëÇÕ´Ï´Ù. ±¸¹®) .REPEAT ¸í·É¹® .UNTIL Á¶°Ç .REPEAT ¸í·É¹® .UNTILCX [Á¶°Ç] ¿¹¸¦ º¸¸é È®½ÇÈ÷ ÀÌÇØ°¡ °¥°Ì´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â Å°º¸µå·Î ÀÔ·Â À» ¹Þ¾Æ¼­ ¹öÆÛ¿¡ ³Ö¾îÁÖ´Â ¿¹Á¦ÀÔ´Ï´Ù. ¿£Å͸¦ ´©¸£¸é ·çÇÁ´Â ³¡ÀÌ ³ªµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù. .DATA buffer BYTE 100 DUP (?) .CODE sub bx, bx .REPEAT mov ah, 01h int 21h ; Å°º¸µå·Î ºÎÅÍ ÀÔ·Â mov buffer[bx], al ; ¹öÆÛ¿¡ ÀúÀå inc bx ; ´ÙÀ½ ¹öÆÛ Æ÷ÀÎÆ® .UNTIL (al == 13) ; ¿£ÅÍÀ϶§ ±îÁö ·çÇÁ ¿©±â¼­ .UNTIL Áö½Ã¾î´Â ºñ±³ Á¡ÇÁ ¸í·É¾î¸¦ »ý¼ºÇÏ°í .UNTILCXZ´Â loop ¸í·É¾î¸¦ »ý¼ºÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹Á¦´Â Áö½Ã¾î ¸¦ ¸í·É¾î ÄÚµå·Î ¹Ù²Ù¾î Ç¥½ÃÇÑ °ÍÀε¥ À̸¦ »ìÆ캸¸é ÀÌÇØ°¡ °¥ °ÍÀÔ´Ï´Ù. ASSUME bx:PTR SomeStruct .REPEAT @C001: incax .UNTIL ax == 6 cmp ax, 06h ;ºñ±³ Á¡ÇÁ ¸í·É¾î·Î jne @C001 ;¹Ù²ñ .REPEAT @C003: mov ax, 1 .UNTILCXZ loop @C003 ;·çÇÁ ¸í·É¾î·Î ¹Ù²ñ .REPEAT @C004: .UNTILCXZ [bx].field != 6 ; ·çÇÁ ¸í·É¾î·Î cmp [bx].field, 06h ; ¹Ù²ñ loope @C004 ; 2.3 .BREAK, .CONTINUE ¹® -->.BREAK¿Í .CONTINUE¹®Àº .REPEAT À̳ª .WHILE¹®¿¡¼­ ·çÇÁ¸¦ ºü Á® ³ª°¡°Å³ª °è¼Ó ·çÇÁ¸¦ µ¹¸± ¶§ ¾²ÀÔ´Ï´Ù. ¸¶Ä¡ C¾ð¾î¿¡¼­ break¿Í continue¿Í ºñ½ÁÇÕ´Ï´Ù. ±¸¹®) .BREAK [.IF Á¶°Ç] .CONTINUE [.IF Á¶°Ç] ÀÌ ±¸¹®µé¿¡¼­ ÁÖÀÇÇÒ °ÍÀº .IF´ÙÀ½¿¡ .ENDIF°¡ ¾²ÀÌÁö ¾Ê´Â °Í ÀÔ´Ï´Ù. ´ç¿¬ÇÏÁÒ º¸ÅëÀÇ .IF¹®Ã³·³ Á¶°ÇÀÌ ¸ÂÀ¸¸é ±× ¾Æ·¡¿¡ ÀÖ´Â ¸í·É¾î°¡ ¼öÇàµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ±×³É ·çÇÁ¸¦ ºüÁ® ³ª¿À°Å ³ª ´Ù½Ã ·çÇÁ¸¦ ½ÃÀÛÇÒ ¶§ ¾²À̴ϱî¿ä. ±×·³ ¿¹Á¦¸¦ º¸¸é¼­ »ì Æ캾½Ã´Ù. ´ÙÀ½ ¿¹Á¦´Â '0' ºÎÅÍ '9'»çÀÌÀÇ Å°¸¸ ¹Þ¾ÆµéÀÌ°í ±× ¹®ÀÚ¸¦ È­¸é¿¡ ³»º¸³À´Ï´Ù. ±× ¿ÜÀÇ ´Ù¸¥ ¹®ÀÚ°¡ µé¾î¿À´Â °æ¿ì ´Â °è¼Ó Å°¸¦ ÀÔ·ÂÀ» ¹Þ½À´Ï´Ù. ±×¸®°í ¿£ÅÍ°¡ µé¾î¸é ³¡À̳ª°Ô µÇ¾îÀÖ½À´Ï´Ù. .WHILE 1 ; ¹«ÇÑ ·çÇÁ mov ah, 08h int 21h ; get key without echo .BREAK .IF al == 13 ; ¿£ÅÍ¸é ·çÇÁ¸¦ ³ª°¨ .CONTINUE .IF (al<'0') || (al>'9') ; ¼ýÀÚ°¡ ¾Æ´Ï¸é ´Ù½Ã ·çÇÁ mov dl, al mov ah, 02h int 21h ; ¹®ÀÚ¸¦ È­¸é¿¡ ³»º¸³¿ .ENDW ¸¸¾à À§ÀÇ ¿¹Á¦¸¦ /Fl, /Sg ¿É¼ÇÀ» ½á¼­ ¾î¼ÀºíÀ» ÇÏ°í ¸®½ºÆà ÆÄÀÏÀ» »ìÆ캸¸é ´ÙÀ½°ú °°ÀÌ ³ª¿É´Ï´Ù. .WHILE 1 ; ¹«ÇÑ ·çÇÁ 0017 *@C0001: 0017 B4 08 mov ah, 08h 0019 CD 21 int 21h ; get key without echo .BREAK .IF al == 13 ;¿£ÅÍ¸é ·çÇÁ¸¦ ³ª°¨ 001B 3C 0D * cmp al, 00Dh 001D 74 10 * je @C0002 .CONTINUE .IF (al<'0') || (al>'9') 001F 3C 30 * cmp al, '0' 0021 72 F4 * jb @C0001 0023 3C 39 * cmp al, '9' 0025 77 F0 * ja @C0001 ; ¼ýÀÚ°¡ ¾Æ´Ï¸é ´Ù½Ã ·çÇÁ 0027 8A D0 mov dl, al 0029 B4 02 mov ah, 02h 002B CD 21 int 21h ; ¹®ÀÚ¸¦ È­¸é¿¡ ³»º¸³¿ .ENDW 002D EB E8 * jmp @C0001 002F *@C0002: ÁÖÀÇ : Ä®·³ Á¦ÇÑÀ¸·Î ¸®½ºÆà ÆÄÀÏÀ» ÀϺΠ°íÃƽÀ´Ï´Ù. 3. Á¶°Ç¿¡ ´ëÇؼ­ -->.IF, .REPEAT, .WHILE Áö½Ã¾îÀÇ Á¶°ÇÀ» ¾¸¿¡ À־ °ü°èÇü ¿ÀÆÛ·¹ ÀÌÅͳª ¼Ó¼ºÀ» ³ªÅ¸³»´Â PTRÀ» ¾µ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¼­´Â Á¶°Ç¿¡ ¾²ÀÌ´Â °¢Á¾ ¿ÀÆÛ·¹ÀÌÅÍ¿Í ¿ÀÆÛ·£µå, ¼Ó¼º, ¿ì¼±¼øÀ§¿¡ ´ëÇØ ¾Ë¾Æ º¸µµ·Ï ÇսôÙ. 3.1 ¿ÀÆÛ·¹ÀÌÅÍ¿¡ ´ëÇؼ­ -->Á¶°Ç¹®¿¡ ¾²ÀÌ´Â ¿ÀÆÛ·¹ÀÌÅÍ´Â CÀÇ ¿ÀÆÛ·¹ÀÌÅÍ¿Í ¶È°°½À´Ï´Ù. ¿ÀÆÛ·¹ÀÌÅÍ ÀÇ¹Ì ---------- ---- > Å©´Ù. >= Å©°Å³ª °°´Ù. < ÀÛ´Ù <= À۰ųª °°´Ù. & bit test ! logical NOT && logical AND || logical OR ¿ÀÆÛ·¹ÀÌÅÍ°¡ ¾ø´Â Á¶°Ç¹®Àº c¾ð¾î¿¡¼­¿Í °°ÀÌ ´Ù·ì´Ï´Ù. Áï ¿¹ ¸¦ µé¾î¼­ .WHILE (x)´Â .WHILE(x != 0)°ú °°°í, .WHILE(!x)´Â .WHILE (x == 0)°ú °°½À´Ï´Ù. ¶ÇÇÑ, Ç÷¢ À̸§(ZERO?, CARRY?, OVERFLOW, SIGN?, PARITY?)À» ½á¼­ Á¶°ÇÀ» ³ªÅ¸ ³¾ ¼öµµ Àִµ¥ Áï .WHILE (CARRY?)°°ÀÌ ¾µ ¼ö ÀÖ½À´Ï´Ù. 3.2 Signed, Unsigned ¿ÀÆÛ·£µå¿¡ ´ëÇØ -->Á¶°Ç¿¡ ¾²ÀÏ ¼ö ÀÖ´Â ¿ÀÆÛ·£µå´Â ·¹Áö½ºÅÍ, »ó¼ö, ¸Þ¸ð¸®°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ±âº»ÀûÀ¸·Î Á¶°Ç¹®¿¡ ÀÖ´Â ¿ÀÆÛ·£å´ unsigned·Î °¡Á¤À» ÇÕ´Ï´Ù. ±×·±µ¥ ¸¸¾à¿¡ ºñ±³µÇ´Â ¿ÀÆÛ·£µå°¡ singed¶ó¸é ¹®Á¦°¡ »ý±â°Ô µË´Ï´Ù. ÀÌ·²¶© PTR ¿ÀÆÛ·¹ÀÌÅͷΠƯÁ¤ÇÑ ¿ÀÆÛ·£ µå°¡ singedÀÎ °ÍÀ» ¾Ë·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î¼­.. .WHILE SWORD PTR [bx] <= 0 .IF SWORD PTR mem1 > 0 ¸¸¾à ¿©±â¼­ PTR ¿ÀÆÛ·¹ÀÌÅÍ°¡ ¾È¾²¿´´Ù¸é bxÀÇ ³»¿ëÀ» unsigned·Î °¡Á¤ÇÏ°í ¸í·É¾î¸¦ »ý¼ºÇßÀ» °ÍÀÔ´Ï´Ù. À§¿¡¼­ ¸»Çß´Ù½ÃÇÇ ¸Þ¸ð¸® ¿ÀÆÛ·»µåÀÇ ¼Ó¼ºÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À ´Ï´Ù. Áï.. .DATA mem1 SBYTE ? mem2 WORD ? .IF mem1 > 0 .WHILE mem2 < bx .WHILE SWORD ptr ax < count À§ÀÇ ¿¹Á¦¿¡¼­´Â ¸Þ¸ð¸®¸¦ ÇÒ´çÀ» ÇÒ ¶§ ¹Ì¸® SBYTE¶ó°í ¾Ë·ÁÁÖ ¾ú±â ¶§¹®¿¡ ÀüÀÇ ¿¹Á¦Ã³·³ SWORD PTRÀ» ¾µ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. 3.3 ¿ì¼± ¼øÀ§¿¡ ´ëÇØ -->C¾ð¾îó·³ &&, ||, !À¸·Î Á¶°ÇµéÀ» ¿¬°áÀ» Çؼ­ ¾µ ¼ö Àִµ¥ ÀÌ·¸°Ô ¾µ ¶§ ¿ì¼±¼øÀ§´Â !,&&, ||¼øÀÔ´Ï´Ù. ¶ÇÇÑ Có·³ ¿ÞÂÊ ¿¡¼­ ¿À¸¥ÂÊÀ¸·Î Á¶°ÇÀ» »ìÇÌ´Ï´Ù. ¿À´Ã °­Á¿¡¼­ º¸¾ÒµíÀÌ MASM 6.0¿¡¼­´Â ¸¶Ä¡ °í±Þ¾ð¾î(ƯÈ÷ C)¿Í ºñ½ÁÇÑ ±¸¹®À» Á¦°øÇÏ¿© ÇÁ·Î±×·¡¹ÖÀ» ¸Å¿ì ÆíÇÏ°Ô ±×¸®°í ¼Ò½º¸¦ º¸ ±â ½±°Ô ¸¸µé¾î ÁÖ°í ÀÖ½À´Ï´Ù. ´ÙÀ½ °­Á¿¡¼­´Â ÇÁ·Î½ÃÁ®¿¡ ´ëÇÑ ÀÏ ¹ÝÀûÀÎ ¾ê±â¿Í MASM 6.0¿¡¼­ ³ª¾ÆÁø ÇÁ·Î½ÃÁ® Áö½Ã¾îµé¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸µµ·Ï ÇսôÙ. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¦¸ñ: [°­ÁÂ] MASM 6.0 »ç¿ë¹ý 6/8 ------------------------------------------------------------------------------ [MASM6.0/6] È®ÀåµÈ ÇÁ·Î½ÃÁ® ±â´É(1) ¿ä¹ø °­Á¿¡¼­´Â ÇÁ·Î½ÃÁ® Áö½Ã¾î¸¦ ÀÌ¿ëÇؼ­ È¿°úÀûÀ¸·Î ÆĶó¸ÞÅ͸¦ ÁÖ°í¹Þ´Â ¹æ¹ý°ú ÆĶó¸ÞÅÍÀÇ ¼ö°¡ °¡º¯ÀûÀÎ °ÍÀ» ´Ù·ç´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¾ê±âÇØ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. 1.1 ÇÁ·Î½ÃÁ®¿¡ Àμö(argument)¸¦ Àü´ÞÇϱâ ÇÁ·Î½ÃÁ®¿¡ Àμö¸¦ Àü´ÞÇÏ´Â ¹æ¹ýÀº ¿©·¯ °¡Áö ¹æ¹ýÀÌ Àִµ¥, ¿¹¸¦ µé¸é ·¹Áö½ºÅ͸¦ ÅëÇؼ­ Àü´ÞÇÏ´Â ¹æ¹ý°ú global º¯¼ö¸¦ ÅëÇØ Àü´Þ ÇÏ´Â ¹æ¹ý µîÀÌ ÀÖ´Ù. ¶ÇÇÑ °í±Þ¾ð¾î¿¡¼­ ¾²´Â ¹æ¹ýÀ¸·Î °¡Àå ÀÏ¹Ý ÀûÀÎ Àü´Þ ¹æ¹ýÀ¸·Î ¾²ÀÌ´Â °ÍÀº ½ºÅÃÀ» ÅëÇؼ­ Àü´ÞÇÏ´Â °ÍÀÌ´Ù. ±×·¯³ª Àμö¸¦ ½ºÅÿ¡ Àü´ÞÇÏ´Â ¹æ¹ýµµ ¾ð¾î¿¡ µû¶ó¼­ ´Ù¸¥µ¥ ÀÌ·¸ °Ô ½ºÅÃÀ» ÀÌ¿ëÇÏ¿© Àμö¸¦ Àü´ÞÇÏ´Â °üÇàÀ» calling convention(È£ Ãâ °üÇà)À̶ó°í ÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹´Â c ½ºÅ¸ÀÏÀÇ È£Ãâ °üÇà¿¡ µû¶ó ÇÁ·Î½ÃÁ®¸¦ Á¤ÀÇÇÏ°í ½ºÅÃÀ» ÅëÇÏ¿© Àμö¸¦ Àü´ÞÇÏ´Â ºÎºÐÀÌ´Ù. C¿¡¼­ addupÀ̶ó´Â 3°³ÀÇ ÀμöµéÀ» ¹Þ¾Æ ±× ÀμöµéÀ» ¸ðµÎ ´õÇؼ­ °ªÀ¸·Î µ¹·ÁÁÖ´Â ÇÔ¼ö¸¦ »ý°¢ÇÏÀÚ. c ÇÁ·Î±×·¥¿¡¼­ addup ( arg1 ,arg2, 10)À̶ó°í ÇÔ¼ö¸¦ È£ÃâÇÏ¸é ¾Æ·¡¿Í °°Àº ¾î¼Àºí¸®·Î ¹ø¿ªµÉ °ÍÀÌ´Ù. ´Ü arg1, arg2¸¦ wordÅ©±âÀÇ º¯¼ö¶ó°í »ý°¢À» ÇÏÀÚ(Áï int ¿Í °°ÀÌ 2 byte Å©±â) mov ax, 10 push ax ;¼¼¹ø° Àμö¸¦ ½ºÅÿ¡ ÀúÀå push arg2 ;µÎ¹ø° Àμö¸¦ ½ºÅÿ¡ ÀúÀå push arg3 ;ù¹ø° Àμö¸¦ ½ºÅÿ¡ ÀúÀå call addup ;ÇÔ¼ö¸¦ È£Ãâ add sp, 6 ;ÀμöÀÇ ½ºÅà ÇÁ·¹ÀÓÀ» ¾ø¾Ú ... ... addup PROC NEAR ;nearÇü ÇÁ·Î½ÃÁ® À̹ǷΠ½ºÅÿ¡ ;¾îµå·¹½º ÀúÀåÀ¸·Î 2byte¸¦ Â÷Áö push bp ;base pointer ¸¦ ÀúÀå (2bytes) mov bp, sp ; bp=sp mov ax, [bp+4] ; ù¹ø° Àμö¸¦ Àоîµå¸² add ax, [bp+6] ; µÎ¹ø° Àμö¶û ´õÇÔ add ax, [bp+8] ; ¼¼¹ø° Àμö¶û ´õÇÔ mov sp, bp pop bp ret ;°á°ú°ªÀ» Àü´ÞÇØÁÜ addup ENDP À§ÀÇ ¼Ò½º¸¦ °¡Áö°í ½ºÅÃÀÌ ¾î¶»°Ô º¯È­µÇ´Â°¡¸¦ ±×¸²À¸·Î ¼³¸íÀ» ÇÏ¸é ´ÙÀ½°ú °°´Ù. 1. call addup ÇϱâÀü 2. call addup ÈÄ »óÀ§ | | »óÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ |¼¼¹ø° Àμö| |¼¼¹ø° Àμö| +-----------+ +-----------+ |µÎ¹ø° Àμö| |µÎ¹ø° Àμö| +-----------+ +-----------+ |ù¹ø° Àμö|<-SP |ù¹ø° Àμö| +-----------+ +-----------+ | | | ¸®ÅÏ ÁÖ¼Ò |<-SP +-----------+ +-----------+ ÇÏÀ§ | | ÇÏÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ | | | | 3. push bp 4. pop bp ÇÑ ÈÄ mov bp, sp ÇÑÈÄ »óÀ§ | | »óÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ |¼¼¹ø° Àμö|<-BP+8 |¼¼¹ø° Àμö| +-----------+ +-----------+ |µÎ¹ø° Àμö|<-BP+6 |µÎ¹ø° Àμö| +-----------+ +-----------+ |ù¹ø° Àμö|<-BP+4 |ù¹ø° Àμö| +-----------+ +-----------+ | ¸®ÅÏ ÁÖ¼Ò | | ¸®ÅÏ ÁÖ¼Ò |<-SP +-----------+ +-----------+ ÇÏÀ§ |ÀÌÀü BP °ª |<-BP/SP ÇÏÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ | | | | 5. ret ÇÑ ÈÄ 6. add sp, 6 ÇÑ ÈÄ »óÀ§ | | »óÀ§ | |->SP ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ |¼¼¹ø° Àμö| | | +-----------+ +-----------+ |µÎ¹ø° Àμö| | | +-----------+ +-----------+ |ù¹ø° Àμö|<-SP | | +-----------+ +-----------+ | | | | +-----------+ +-----------+ ÇÏÀ§ | | ÇÏÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ | | | | Á»´õ ºÎ¿¬ ¼³¸íÀ» ÇÏÀÚ¸é, À§¿¡¼­ º¸´Ù½ÃÇÇ cÀÇ È£Ãâ °üÇà¿¡¼­´Â ÀμöÀÇ ¸¶Áö¸· °ÍºÎÅÍ, Áï À§ÀÇ ¼Ò½º¿¡¼­´Â »ó¼ö(10)¸¦ ¸ÕÀú ½ºÅÿ¡ ÀúÀåÀ» ÇÏ°í ±×¸®°í µÎ¹ø°, ù¹ø° ÀÌ·¸°Ô °Å²Ù·Î ½ºÅÿ¡ Àμö¸¦ ÀúÀåÀ» ÇÑ´Ù. ±×·¯³ª ÆĽºÄ®Àº ÀÌ¿Í´Â ´Þ¸® ¼øÇàÀ¸·Î ½ºÅÿ¡ Àμö¸¦ ÀúÀåÇÑ´Ù. ±×¸®°í c¿¡¼­´Â À§ÀÇ ¿¹Á¦¿Í °°ÀÌ È£ÃâÇÑ ÂÊ¿¡¼­ Àμö¸¦ À§ÇÑ ½ºÅà ÇÁ·¹ÀÓÀ» ¾ø¾Ö±â ¶§¹®¿¡(À§ÀÇ ¼Ò½º¿¡¼­ add sp, 6) Àμö ÀÇ °¹¼ö¸¦ °¡º¯ÀûÀ¸·Î ÇÒ ¼ö ÀÖÀ¸³ª ÆĽºÄ®Àº È£ÃâµÈ ÂÊ, Áï ÇÁ·Î½Ã Á® ÀÚü¿¡¼­ Àμö¸¦ À§ÇÑ ½ºÅà ÇÁ·¹ÀÓÀ» ¾ø¾Ö±â ¶§¹®¿¡ °¡º¯ÀûÀÎ ÀÎ ¼ö¸¦ °¡Áú ¼ö ¾ø´Ù. ÀÌ·¸µí ¾ð¾î¸¶´Ù È£Ãâ°üÇàÀÌ ´Ù¸£¹Ç·Î ³ªÁß¿¡ È¥ÇÕ ¾ð¾î ÇÁ·Î±×·¡¹ÖÀ» ÇÒ¶§ ÀÌ·¯ÇÑ Á¡À» Àß °í·ÁÇÏ¿© ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ¾ß ÇÑ´Ù. 1.2 ÇÁ·Î½ÃÁ® Á¤ÀÇÇϱâ PROC Áö½Ã¾î¸¦ »ç¿ëÇؼ­ ÇÁ·Î½ÃÁ®¸¦ Á¤ÀÇÇÒ ¶§¿¡´Â ÀúÀåµÇ¾î¾ßÇÒ ·¹ Áö½ºÅ͵é°ú ÇÁ·Î½ÃÁ®¿¡¼­ ¹Þ´Â ÆĶó¸ÞÅ͵éÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ÀÌÀü ¹öÁ¯°ú ´Þ¸® ÆĶó¸ÞÅ͵éÀ» ÇÁ·Î½ÃÁ® Á¤ÀÇÇÒ ¶§ Á¤ÀÇÇÔÀ¸·Î½á ÆíÇÏ°Ô ÆĶó¸ÞÅ͵éÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ±×·³ ¿¹¸¦ µé¾î¼­ C Çü½ÄÀÇ ÇÁ·Î½ÃÁ® ¸¦ Á¤ÀÇÇÏ¸é ´ÙÀ½°ú °°´Ù. myproc PROC FAR C PUBLIC USES di si, var1:WORD, arg1:VARARG | | | | | | | | +--+-+ +----+-----+ +---+----+ +---+----+ | | | | label attributes reglist parameters ÀϹÝÀûÀ¸·Î ÇÁ·Î½ÃÁ®ÀÇ ±¸¹®À» »ìÆ캸¸é.. label PROC [attributes] [USES reglist] [,parameter[:tag]...] ±¸¼º ¿ä¼Ò ¼³ ¸í --------- ------------ label ÇÁ·Î½ÃÁ®ÀÇ À̸§ attributes distance¿Í ¾ð¾î Á¾·ù, visibility¿Í °° Àº ¼Ó¼ºÀ» ³ªÅ¸³½´Ù. reglist USES Áö½Ã¾î¿¡ µû¸£´Â ·¹Áö½ºÅ͵éÀº ÇÁ·Î ½ÃÁ®ÀÇ ½ÃÀۺκп¡ ÀúÀåµÈ´Ù. ·¹Áö½ºÅÍ µéÀº ºóÄ­À̳ª ÅÇÀ¸·Î ±¸ºÐµÇ¾î¾ß Çϸç ÄÞ¸¶·Î ±¸ºÐµÇ¸é ¾ÈµÈ´Ù. USES Áö½Ã¾î°¡ ¿À¸é ÀÚµ¿ÀûÀ¸·Î ¾î¼Àºí·¯°¡ ÇÁ·Î½ÃÁ®ÀÇ ¾ÕºÎºÐ(ÇÁ·Ñ·Î±×)¿¡´Â push ¸í·É¾î·Î ·¹ Áö½ºÅ͵éÀ» ½ºÅÿ¡ º¸°üÇÏ°í ÇÁ·Î½ÃÁ®ÀÇ ³¡ºÎºÐ(¿¡Çʷα×)¿¡´Â pop ¸í·É¾î·Î ´Ù½Ã ÀúÀåµÈ ·¹Áö½ºÅÍ °ªÀ» º¹±ÍÇÑ´Ù. ÇÁ·Î½Ã Á®°¡ ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» ¹Ù²Ù°Ô µÉ ¶§ USES reglist¸¦ »ç¿ëÇÔÀ¸·Î½á ÇÁ·Î½ÃÁ®°¡ È£ÃâµÈ ÂÊÀ¸·Î º¹±ÍÇصµ ·¹Áö½ºÅÍÀÇ ³»¿ë ÀÌ ¹Ù²îÁö ¾Êµµ·Ï ÇÒ ¶§ »ç¿ëÇÑ´Ù. parameter ½ºÅÃÀ» ÅëÇؼ­ ÇÁ·Î½ÃÁ®¿¡Àü´ÞµÇ´Â ÆĶó ¸ÞÅÍ ¸®½ºÆ®µé. ¸®½ºÆ®°¡ ÇÑ ÁÙÀ» ³Ñ¾î¼­ °ÔµÇ¸é ÁÙ ³¡¿¡ ÄÞ¸¶¸¦ ÇÏ°í ´ÙÀ½ÁÙ¿¡ ¿¬ °áÇÏ¿© ³ªÅ¸³¾ ¼ö ÀÖ´Ù. 1.2.1 Attributes ÇÁ·Î½ÃÁ®ÀÇ attribute ±¸¹®Àº ´ÙÀ½°ú °°´Ù. [distance] [langtype] [visibility] [] ±¸¼º¿ä¼Ò ¼³ ¸í --------- -------- distance RET ¸í·É¾îÀÇ ÇüÅÂ(retn, retf)¸¦ °áÁ¤ÇÏ°Ô µÇ´Â ¿ä¼ÒÀÌ´Ù. NEAR³ª FAR µÑÁßÀÇ Çϳª°¡ µÉ ¼ö ÀÖ ´Ù. ¸¸¾à¿¡ distance°¡ ±â¼úµÇÁö ¾Ê¾Ò´Ù¸é .MODEL¿¡ ÀÇÇؼ­ °áÁ¤µÈ´Ù. TINY, SMALL, COMPACT, FLATÀº NEAR°¡ µÇ°í MEDIUM, LARGE, HUGE´Â FAR°¡ µÈ´Ù. langtype À§¿¡¼­ ¾ð±ÞÇÑ È£Ãâ°üÇà(calling convention)À» °áÁ¤ÇÏ°Ô µÇ´Â ¿ä¼ÒÀÌ´Ù. BASIC, FORTRAN, PASCALÀº ÇÁ·Î½ÃÁ®ÀÇ À̸§À» ´ë¹®ÀÚ·Î º¯È¯ÇÏ°í ¸¶Áö¸· ÆĶó¸ÞÅÍ°¡ ½ºÅÃÀÇ °¡Àå óÀ½¿¡ À§Ä¡ÇÏ°Ô µÈ´Ù. (°¡Àå ³·Àº ¸Þ¸ð¸®¿¡ À§Ä¡ÇÏ°Ô µÈ´Ù.) RET n ¸í·É¾î¸¦ ÅëÇؼ­ ½ºÅÃÇÁ·¹ÀÓÀ» ÇÁ·Î½ÃÁ®¿¡¼­ ¾ø¾Ö°Ô µÇ¾î °¡º¯ÀûÀÎ ÆĶó¸ÞÅ͸¦ ±¸ÇöÇÒ ¼ö ¾ø ´Ù. C³ª STDCALLÀº ÇÁ·Î½ÃÁ®ÀÇ scope°¡ PUBLICÀ̰ųª EXPORTÀÏ °æ¿ì´Â ÇÁ·Î½ÃÁ® À̸§ÀÇ ¸Ç ¾ÕºÎºÐ¿¡ ¹ØÁÙ('_')À» ºÙÀÌ°í ù¹ø° ÆĶó¸ÞÅÍ°¡ ½ºÅÃÀÇ °¡Àå óÀ½¿¡ À§Ä¡ÇÏ°Ô µÈ´Ù. (°¡Àå ³·Àº ¸Þ¸ð¸® ¿¡ À§Ä¡ÇÏ°Ô µÈ´Ù.) SYSCALLÀº CÀÇ È£Ãâ°üÇà°ú ¶È°°Àºµ¥ ´Ù¸¸ ÇÁ·Î½ÃÁ® À̸§ÀÇ ¾ÕºÎºÐ¿¡ ¹ØÁÙÀ» ºÙÀÌÁö ¾Ê´Â´Ù. STDCALLÀº ÇÁ·Î½ÃÁ®¸¦ È£ÃâÇÑ ÂÊ ¿¡¼­ ½ºÅà ÇÁ·¹ÀÓÀ» ¾ø¾Ö±â ¶§¹®¿¡ ÆĶó¸ÞÅÍÀÇ ¼ö°¡ °¡º¯ÀûÀÏ ¼ö ÀÖ´Ù. visibility ÇÁ·Î½ÃÁ®°¡ ´Ù¸¥ ¸ðµâ¿¡¼­ »ç¿ë °¡´ÉÇÑ°¡¸¦ ³ªÅ¸ ³½´Ù. visibility¿¡´Â PRIVATE, PUBLIC, EXPORT °¡ µÉ ¼ö ÀÖ´Ù. ÇÁ·Î½ÃÁ®´Â PRIVATEÀ̶ó°í ¸í½Ã µÇÁö ¾ÊÀº ÀÌ»ó ±âº»ÀûÀ¸·Î PUBLIC·Î °£ÁֵȴÙ. ¸¸¾à¿¡ visibility°¡ EXPORTÀÎ °æ¿ì´Â linker°¡ ÇÁ·Î½ÃÁ®ÀÇ À̸§À» export table¿¡ ¿Ã¸°´Ù. ´ç¿¬ È÷ EXPORT´Â PUBLICÀ» Æ÷ÇÔÇÏ°Ô µÈ´Ù. OPTION Áö ½Ã¾î¸¦ ½á¼­ default visibility¸¦ Á¤ÇÒ ¼ö ÀÖ ´Ù. OPTION PROC:PUBLIC À̶ó°í Çϸé ÇÁ·Î½ÃÁ®ÀÇ ±âº» visibility´Â PUBLICÀÌ µÈ´Ù. prologuearg ÇÁ·Î½ÃÁ®ÀÇ Ã³À½°ú ³¡ºÎºÐÀÇ ÄÚµå Áï prologue¿Í epilogue Äڵ带 »ý¼ºÇÏ´Â µ¥ ¿µÇâÀ» ÁÖ´Â ¿ä¼Ò ÀÌ´Ù. ³ªÁß¿¡ ¼³¸íÇÒ °ÍÀÌ´Ù. 1.2.2 Parameters ¸¸¾à PROC Áö½Ã¾î¿¡ reglist°¡ Á¸ÀçÇÏ¸é ·¹Áö½ºÅÍ ¸®½ºÆ®¿Í ÆÄ ¶ó¸ÞÅÍ´Â ÄÞ¸¶·Î ±¸ºÐµÈ´Ù. ÆĶó¸ÞÅÍÀÇ ±¸¹®À» »ìÆ캸¸é.. parmname[:tag] parmnaneÀº ÆĶó¸ÞÅÍÀÇ À̸§ÀÌ°í tag´Â BYTE³ª WORD¿Í °°Àº Ÿ ÀÔÀ̳ª °¡º¯ ÆĶó¸ÞÅ͸¦ ³ªÅ¸³»´Â Å°¿öµå VARARG°¡ µÉ ¼ö ÀÖ ´Ù. VARARG Å°¿öµå´Â Ç×»ó ÆĶó¸ÞÅÍÀÇ ¸®½ºÆ®ÀÇ ¸Ç³¡¿¡ ¿Í¾ßÇÑ ´Ù. Parmname -------+ +-- Qualifiedtype EX) | | myproc PROC FAR C PUBLIC USES di si, var1:WORD, arg1:VARARG ·¹Áö½ºÅÍ ¸®½ºÆ®¿Í | | | | ÄÞ¸¶·Î ±¸ºÐµÈ´Ù. -----------+ +---+---+ | | | Parameters | VARARG´Â ÆĶó¸ÞÅÍÀÇ -------+ ¸Ç³¡¿¡ ¿Â´Ù. ´ÙÀ½ÀÇ ¿¹´Â À§ÀÇ 1.1ÀÇ ¿¹Á¦ Áß¿¡¼­ ÇÁ·Î½ÃÁ® Á¤ÀǺκÐÀ» ÆÄ ¶ó¸ÞÅÍ ¸®½ºÆ®¸¦ ³ª¿­ÇÏ´Â ±â´ÉÀ» ÀÌ¿ëÇÏ¿© ´Ù½Ã °íÃÄ ¾´ °ÍÀÌ ´Ù. ¿ªÇÒÀº 1.1.ÀÇ ÇÁ·Î±×·¥°ú ¶È°°À¸³ª ÈξÀ º¸±â½±°í ÇÁ·Î±× ·¡¹Öµµ ½¬¿öÁø´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. addup PROC NEAR C, arg1:WORD, arg2:WORD, count:WORD mov ax, arg1 add ax, count add ax, arg2 ret addup ENDP ¸¸¾à¿¡ ÇÁ·Î½ÃÁ®ÀÇ argument°¡ Æ÷ÀÎÅÍ Å¸ÀÔÀ̶ó¸é À§ÀÇ ¿¹Á¦¿Í °°ÀÌ ´Ü¼øÈ÷ mov ¸í·É¾î Çϳª·Î Æ÷ÀÎÅÍ°¡ °¡¸£Å°´Â °÷ÀÇ °ªÀ» ¾òÀ» ¼ö ¾ø´Ù. ¸¸¾à¿¡ ±× °ªÀ» ¾òÀ¸·Á¸é Æ÷ÀÎÅÍ Å¸ÀÔÀÇ argument¸¦ ¾îµå·¹½º·Î °£ÁÖÇÏ°í °ªÀ» ¾ò¾î ¿Í¾ß ÇÑ´Ù. ¸¸¾à¿¡ Æ÷ÀÎÅÍ°¡ near Æ÷ÀÎÅͶó¸é mov ¸í·É¾î¸¦ µÎ¹ø ½á¼­ ±× °ªÀ» ±¸ ÇÒ ¼ö°¡ ÀÖ´Ù. óÀ½ mov ¸í·É¾î´Â ÆĶó¸ÞÅÍÀÇ ¾îµå·¹½º¸¦ ¾ò¾î ¿À°í µÎ¹ø° mov ¸í·É¾î´Â ½ÇÁ¦ ÆĶó¸ÞÅÍÀÇ °ªÀ» ¾ò¾î¿À´Â °Í ÀÌ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸¸é ½±°Ô ÀÌÇØÇÒ °ÍÀÌ´Ù. ; Call from C as a FUNCTION returning an integer .MODEL medium, c .CODE myadd PROC arg1:NEAR PTR WORD, arg2:NEAR PTR WORD mov bx, arg1 ; argumentÀÇ ÁÖ¼Ò¸¦ ¾ò´Â´Ù. mov ax, [bx] ; ½ÇÁ¦ °ªÀ» ¾ò´Â´Ù. mov bx, arg2 add ax, [bx] ; µÎ¹ø° °ª°ú ´õÇÑ´Ù. ret myadd ENDP END ¸¸¾à¿¡ Æ÷ÀÎÅÍ Å¸ÀÔÀÌ nearÀÎÁö farÀÎÁö Àß ¸ð¸¦ °æ¿ì³ª ¿©·¯ ¸ðµ¨¿¡ »ó°ü¾øÀÌ °ªÀ» Á¦´ë·Î ¾òÀ¸·Á¸é conditional-assembly Áö½Ã¾î(directive)¸¦ ÀÌ¿ëÇÏ¿© ÇØ°áÇÒ ¼ö ÀÖ´Ù. ¾Æ·¡ ¿¹Á¦´Â À§ÀÇ myadd¶ó´Â ÇÁ·Î½ÃÁ®°¡ far³ª near¿¡ »ó°ü¾øÀÌ Æ÷ÀÎÅÍ°¡ °¡¸£Å°´Â °ªÀ» ¾ò¾î¼­ Á¦´ë·Î ¼öÇàÇÒ ¼ö ÀÖ°Ô °íÄ£°ÍÀÌ´Ù. .MODEL medium, c ; ¾Æ¹« ¸ðµ¨À̳ª »ó°ü¾ø´Ù. .CODE myadd PROC arg1:PTR WORD, arg2:PTR WORD IF @DataSize les bx, arg1 ; farÀÎ ÆĶó¸ÞÅÍ mov ax, es:[bx] les bx, arg2 add ax, es:[bx] ELSE mov bx, arg1 ; nearÀÎ ÆĶó¸ÞÅÍ mov ax, [bx] mov bx, arg2 add ax, [bx] ENDIF ret myadd ENDP END NOTE : À§ÀÇ ¿¹Á¦¿¡¼­ @DataSize´Â ¸Þ¸ð¸® ¸ðµ¨ÀÌ tiny, small, medium, flatÀÏ °æ¿ì´Â 0, compact, large´Â 1, huge´Â 2ÀÇ °ªÀ» ÁÖ´Â predefined symbolÀÌ´Ù. À§ ÀÇ ¿¹Á¦¿¡¼­´Â @DataSizeÀÇ °ªÀÌ 0ÀÎ °æ¿ì´Â µ¥ÀÌŸ°¡ near¿¡ À§Ä¡ÇÏ°í ±× ¿Ü¿¡´Â far¿¡ À§Ä¡ÇÔÀ» ÀÌ¿ëÇÑ °Í ÀÌ´Ù. 1.2.3 ÆĶó¸ÞÅÍÀÇ ¼ö°¡ °¡º¯ÀûÀÎ °æ¿ì( Using VARARG ) À§¿¡¼­ ¾ð±ÞÇÑ °Í°ú °°ÀÌ È£Ãâ°üÇàÀÌ C, SYSCALL, STDCALLÀÎ °æ¿ì ´Â PROC Áö½Ã¾î¸¦ ÀÌ¿ëÇÏ¿© ÆĶó¸ÞÅÍÀÇ ¸Ç³¡¿¡ VARARG¸¦ ÀÌ¿ëÇÔÀ¸ ·Î½á ÆĶó¸ÞÅÍÀÇ ¼ö°¡ °¡º¯ÀûÀÎ °Íµµ ¹Þ¾Æ µéÀÏ ¼ö°¡ ÀÖ´Ù. ´ÙÀ½ ÀÇ ¿¹Á¦¸¦ »ìÆ캸ÀÚ. addup3 PROTO NEAR C, argcount:WORD, arg1:VARARG invoke addup3, 3, 5, 2, 4 ddup3 PROTO NEAR C, argcount:WORD, arg1:VARARG sub ax, ax ; ax=0 sub si, si ; si=0 .WHILE argcount > 0 add ax, arg1[si] inc si inc si dec argcount .ENDW ret addup3 ENDP ¿¹Á¦ÀÇ µÑ°ÁÙÀÇ invoke´Â MASM 6.0¿¡¼­ óÀ½À¸·Î »ý±ä ÇÁ·Î¼¼ ¼­ ¸í·É¾î°¡ ¾Æ´Ñ ¾î¼Àºí·¯ Áö½Ã¾îÀε¥ ÇÁ·Î½ÃÁ®¸¦ È£ÃâÇÒ ¶§ ÆÄ ¶ó¸ÞÅͱîÁö ³Ñ°ÜÁÖ´Â ±â´É°ú ¶Ç ´Ù¸¥ ¿©·¯°¡Áö ±â´ÉÀ¸·Î ¸¶Ä¡ °í ±Þ¾ð¾î¿¡¼­ ÇÔ¼ö¸¦ È£ÃâÇϵµ·Ï ÇÒ ¼ö ÀÖµµ·Ï ÇÏ¿´´Ù. ÀÌ¿¡ ´ëÇؼ­ ´Â ´ÙÀ½ °­Á ¶§ ¼³¸íÇϱâ·Î ÇÏ°Ú´Ù. À§ÀÇ addup3¶ó´Â ÇÁ·Î½ÃÁ®´Â 3°³ÀÇ ¼ýÀÚ¸¦ ´õÇÏ´Â ÇÁ·Î½ÃÁ®ÀÌ ´Ù. 3°³ÀÇ ¼ýÀÚ´Â ÆĶó¸ÞÅÍ·Î ¹Þ´Âµ¥ VARARG¸¦ ½á¼­ ÆĶó¸ÞÅÍÀÇ ¼ö¸¦ °¡º¯ÀûÀ¸·Î ¹Þ°í ÀÖ´Ù. invoke addup3, 3, 5, 2, 4¶ó°í ÇÏ ¸é addup3¶ó´Â ÇÁ·Î½ÃÁ®¸¦ ºÎ¸£°Ô µÇ¸ç óÀ½¿¡ ³ª¿À´Â 3Àº argcount¶ó´Â ÆĶó¸ÞÅÍ °ªÀ¸·Î µé¾î°¡°Ô µÈ´Ù. addup3 ÇÁ·Î½ÃÁ®¿¡ ¼­ argcount °ªÀº °¡º¯ÀûÀÎ ÆĶó¸ÞÅÍÀÇ °¹¼ö¸¦ ³ªÅ¸³»´Â µ¥ ù¹ø ° 3Àº µÚ ³ª¿À´Â ´õÇØÁú ¼ýÀÚ(5, 2, 4)µéÀÇ °¹¼ö¸¦ ³ªÅ¸³»´Â °ÍÀÌ´Ù. addup3 ÇÁ·Î½ÃÁ®¿¡¼­´Â .WHILE ·çÇÁ¿¡¼­ add ax, arg1[si]À¸·Î °¢ ÆĶó¸ÞÅ͸¦ ´õÇÏ°Ô µÇ¾î ÀÖÀ¸¸ç si+2¸¦ ÇÔÀ¸·Î½á (À§ÀÇ inc si ¸í·É¾î 2°³) ´ÙÀ½ ÆĶó¸ÞÅ͸¦ Àоî¿Ã ¼ö ÀÖ°Ô µÇ¾î ÀÖ´Ù. ·çÇÁÀÇ Á¾·á Á¶°ÇÀ¸·Î argcount¸¦ ¸Å ·çÇÁ¸¶´Ù 1¾¿ ÁÙÀÓÀ¸ ·Î½á ÆĶó¸ÞÅÍÀÇ °¹¼ö¸¦ °¡º¯ÀûÀ¸·Î ÇÒ ¼ö ÀÖ°Ô Çß´Ù. À§ÀÇ ¿¹Á¦¿¡¼­ invoke addup3, 5, 1, 2, 3, 4, 5¶ó°í Çϸé 1ºÎÅÍ 5±îÁö ´Ù¼¸°³ÀÇ ¼ýÀÚ¸¦ ´õÇÏ°Ô µÊÀ» º¼ ¼ö ÀÖ´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¦¸ñ: [°­ÁÂ] MASM 6.0 »ç¿ë¹ý 7/8 ------------------------------------------------------------------------------ [MASM6.0/7] È®ÀåµÈ ÇÁ·Î½ÃÁ® ±â´É(2) °í±Þ¾ð¾î¿¡¼­ Áö¿ª º¯¼ö(local variables)´Â ´ëºÎºÐ ½ºÅÿ¡ ÀúÀåµÈ´Ù. ¾î¼Àºí¸® ¾ð¾î¿¡¼­µµ Áö¿ª º¯¼ö¸¦ ±¸ÇöÇÒ ¼ö Àִµ¥, ¸ÇóÀ½¿¡´Â ±âº»Àû À¸·Î ¾î¼Àºí¸® ¾ð¾î¿¡¼­ Áö¿ª º¯¼ö¸¦ ±¸ÇöÇÏ´Â ¹æ¹ý°ú ´ÙÀ½¿¡´Â LOCAL Áö½Ã¾î¸¦ ÀÌ¿ëÇÏ¿© ÀÚµ¿ÀûÀ¸·Î Áö¿ª º¯¼ö¸¦ ¸¸µé°í ÀÌ¿ëÇÏ´Â ¹æ¹ý¿¡ ´ë ÇØ ¾Ë¾Æº¸°Ú´Ù. 1.1 ±âº»ÀûÀÎ Áö¿ª º¯¼ö »ç¿ë¹ý ¿ì¼± Áö¿ª º¯¼ö¸¦ »ç¿ëÇÏ·Á¸é ÇÁ·Î½ÃÁ®ÀÇ ½ÃÀÛ ºÎºÐ¿¡ Áö¿ª º¯¼ö¸¦ À§ ÇÑ °ø°£À» ½ºÅÿ¡ ¸¶·ÃÇØ¾ß ÇÑ´Ù. ±×·±´ÙÀ½ °¢°¢ÀÇ Áö¿ª º¯¼ö´Â ½ºÅà ¿¡ Á¸ÀçÇÏ´Â À§Ä¡¸¦ ÅëÇؼ­ ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î½ÃÁ®ÀÇ ³¡¿¡´Â ½ºÅà Æ÷ÀÎÅ͸¦ ÀûÀýÈ÷ ¹Ù²Ù¾î ÁÜÀ¸·Î½á Áö¿ª º¯¼ö¸¦ À§ÇØ ÇÒ´çµÈ ½ºÅà °ø°£ À» ¾ø¾ÖÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹Àç´Â Áö¿ª º¯¼ö¸¦ À§Çؼ­ ½ºÅÿ¡ °ø°£À» ¸¶·ÃÇÏ´Â °Í°ú base pointer¸¦ ÅëÇؼ­([bp-2]) Áö¿ªº¯¼ö¸¦ ÂüÁ¶ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÖ°í ÀÖ ´Ù. push ax ; Àμö¸¦ ½ºÅÿ¡ ÀúÀå call task ... ... task PROC NEAR push bp ; save base pointer mov bp, sp ; bp<--sp sub sp, 2 ; Áö¿ª º¯¼ö¸¦ À§ÇØ ½ºÅà ; °ø°£À» È®º¸ ... ... mov WORD PTR [bp-2], 3 ; Áö¿ª º¯¼ö¸¦ 3À¸·Î ; ÃʱâÈ­ÇÑ´Ù. add ax, [bp-2] ; Áö¿ªº¯¼ö¸¦ ax¿¡ ´õÇÔ sub [bp+4], ax ; Àμö¿¡¼­ ax¸¦ »­ ... ... mov sp, bp ; ·ÎÄà º¯¼ö¸¦ À§ÇÑ °ø°£À» ; ¾ø¾Ø´Ù. pop bp ; restore base pointer ret 2 task ENDP À§ÀÇ ¿¹Á¦ ³¡ºÎºÐ¿¡¼­ mov sp, bpÇÔÀ¸·Î½á SPÀÇ ¿ø·¡°ªÀ¸·Î ¹Ù²Ù¾îÁÖ °í ÀÖ´Ù. mov sp, bp´Â spÀÇ ³»¿ëÀÌ ÇÁ·Î½ÃÁ®¾È¿¡¼­ ¹Ù²ð ¶§ ÇÊ¿äÇÏ°Ô µÇ´Âµ¥ ÀϹÝÀûÀ¸·Î Áö¿ª º¯¼ö¸¦ ÇÒ´çÇÒ ¶§ À§¿¡¼­ sub sp, 2¿Í °°ÀÌ spÀÇ ³»¿ëÀÌ ¹Ù²î°Ô µÇ¹Ç·Î ÇÊ¿äÇÏ°Ô µÇ´Â °ÍÀÌ´Ù. ret 2¿¡¼­ 2´Â»ó ¼ö·Î½á ½ºÅà Æ÷ÀÎÅ͸¦ »ó¼ö¸¸Å­ ´õÇÔÀ¸·Î½á ½ºÅà ÇÁ·¹ÀÓÀ» ¾ø¾Ö´Â ¿ª ÇÒÀ» ÇÑ´Ù. ¹Ù·Î Àü °­Á¿¡¼­ ¾ð±ÞÇßµíÀÌ PASCAL °°Àº ¾ð¾î´Â ÀÌ·¸°Ô ÇÁ·Î½ÃÁ® ¾È¿¡¼­ ret n(nÀº »ó¼ö)¸¦ ÀÌ¿ëÇؼ­ Àμö¸¦ À§ÇÑ ½ºÅà ÇÁ·¹ ÀÓÀ» ¾ø¾Ö°Ô µÇ¾î °¡º¯ ÆĶó¸ÞÅ͸¦ »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌÇØ°¡ Àß ¾ÈµÇ¸é ¹Ù·Î Àü °­Á¸¦ »ìÆ캸±â ¹Ù¶õ´Ù. ¿¹Á¦ÀÇ ¸í·É¹®¿¡ µû¸¥ ½ºÅÃÀÇ »óŸ¦ ±×¸²À¸·Î º¸¸é ½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù. 1. call task ÇϱâÀü 2. call task ÈÄ »óÀ§ | | »óÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ | ÀÎ ¼ö |<-SP | ÀÎ ¼ö | +-----------+ +-----------+ | | | ¸®ÅÏ ÁÖ¼Ò |<-SP +-----------+ +-----------+ | | | | +-----------+ +-----------+ | | | | +-----------+ +-----------+ ÇÏÀ§ | | ÇÏÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ | | | | 3. push bp 4. sub sp, 2 ÇÑ ÈÄ mov bp, sp ÇÑÈÄ »óÀ§ | | »óÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +------------+ | ÀÎ ¼ö |<-BP+4 | ÀÎ ¼ö |<-BP+4 +-----------+ +------------+ | ¸®ÅÏ ÁÖ¼Ò | | ¸®ÅÏ ÁÖ¼Ò | +-----------+ +------------+ | ÀÌÀü BP°ª |<-BP/SP | ÀÌÀü BP°ª |<-BP +-----------+ +------------+ | | |Áö¿ªº¯¼ö°ø°£|<-BP-2 +-----------+ +------------+ ÇÏÀ§ | | ÇÏÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +------------+ | | | | 5. mov sp, bp 6. ret 2 ÇÑ ÈÄ pop bp ÇÑÈÄ »óÀ§ | | »óÀ§ | |->SP ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ | ÀÎ ¼ö | | | +-----------+ +-----------+ | ¸®ÅÏ ÁÖ¼Ò |<-SP | | +-----------+ +-----------+ | | | | +-----------+ +-----------+ | | | | +-----------+ +-----------+ ÇÏÀ§ | | ÇÏÀ§ | | ¸Þ¸ð¸® +-----------+ ¸Þ¸ð¸® +-----------+ | | | | 1.2 LOCAL Áö½Ã¾î¸¦ ÅëÇÑ Áö¿ª º¯¼ö »ç¿ë LOCAL Áö½Ã¾î¸¦ »ç¿ëÇϸé Áö¿ª º¯¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÈξÀ ½±°í ½Ã°£ µµ Àý¾àµÇ¸ç ÇÁ·Î±×·¥ÀÌ º¸±â¿¡µµ ½¬¿öÁø´Ù. ÀÌ Áö½Ã¾î¸¦ »ç¿ëÇÏ¿© Áö ¿ª º¯¼öÀÇ À̸§°ú ŸÀÔÀ» ÁÖ¸é ¾î¼Àºí·¯°¡ ÀÚµ¿À¸·Î ½ºÅÿ¡ ¾ó¸¶¸¸Å­ ÀÇ °ø°£ÀÌ ÇÊ¿äÇÑÁö¸¦ °è»êÇÏ°í ±×¿¡ µû¶ó¼­ ±×¸¸Å­ÀÇ °ø°£À» È®º¸ÇÏ ±âÀ§ÇØ SP¸¦ ÀûÀýÈ÷ ¸ÂÃß¾îÁÖ´Â ¸í·É¾î¸¦ »ý¼ºÇÑ´Ù. ±×¸®°í ÇÁ·Î½ÃÁ® ÀÇ ³¡, Áï ÇÁ·Î½ÃÁ®°¡ ¸®ÅÏÇϱâ Àü¿¡ SP¸¦ ´Ù½Ã ¿ø·¡ÀÇ °ªÀ» µÇµ¹·Á ÁÖ´Â ¸í·É¾î¸¦ »ý¼ºÇÏ°Ô µÈ´Ù. Áï, À§ÀÇ 1.1ÀÇ ¿¹Á¦¿¡¼­ ÇÁ·Î½ÃÁ®ÀÇ ¸ÇóÀ½°ú ³¡ÀÇ ¸í·É¾îµé('...'À¸·Î ¾ç³¡À» ±¸ºÐÇßÀ½)À» ÀÚµ¿ÀûÀ¸·Î »ý ¼ºÇÏ°Ô µÈ´Ù. ±×·³ LOCAL Áö½Ã¾î¸¦ »ç¿ëÇÏ¿© 1.1ÀÇ ¿¹Á¦¸¦ ´Ù½Ã °íÃÄ ½áº¸ÀÚ. task PROC NEAR arg:WORD LOCAL loc:WORD ... ... mov loc, 3 ; Áö¿ª º¯¼ö¸¦ 3À¸·Î ; ÃʱâÈ­ÇÑ´Ù. add ax, loc ; Áö¿ªº¯¼ö¸¦ ax¿¡ ´õÇÔ sub arg, ax ; Àμö¿¡¼­ ax¸¦ »­ ... ... ret task ENDP LOCAL Áö½Ã¾î´Â PROC Áö½Ã¾î ¹Ù·Î ´ÙÀ½¿¡ ¿Í¾ßµÇ¸ç LOCAL Áö½Ã¾î Àü¿¡ ¾î¶°ÇÑ ¸í·É¾îµµ ¿À¸é ¾ÈµÈ´Ù. LOCAL Áö½Ã¾îÀÇ ±¸¹®Àº ´ÙÀ½°ú °°´Ù. LOCAL vardef[,vardef]... °¢°¢ÀÇ vardef´Â Áö¿ª º¯¼ö¸¦ Á¤ÀÇÇÏ°Ô µÇ´Âµ¥ ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÈ´Ù. label [[count]][:qualifiedtype] ±¸¼º ¿ä¼Ò ¼³ ¸í ------------ ---------- label Áö¿ª º¯¼öÀÇ ÀÌ count ÁÖ¾îÁø label·Î ¸î°³¸¦ ÇÒ´çÇÒ °ÍÀΰ¡¸¦ ³ª Ÿ³½´Ù. ½±°Ô ¸»Çؼ­ ¹è¿­°ú °°Àº ±â´ÉÀ» ÇÏ ´Â °ÍÀÌ´Ù. countÀÇ ¾çÂÊ¿¡ '[]'À» Ç¥½ÃÇØ¾ß ÇÑ´Ù. count°¡ ¸í½ÃµÇÁö ¾ÊÀ¸¸é ÇϳªÀÇ element·Î °£ÁÖÇÑ´Ù. qualifiedtype WORD, BYTE¿Í °°Àº ŸÀÔÀ» ¸»ÇÑ´Ù. Áö¿ª º¯¼ö ¸®½ºÆ®°¡ ÇÑÁÙÀ» ³Ñ¾î¼­°Ô µÇ¸é ÁÙÀÇ ³¡¿¡ ÄÞ¸¶¸¦ Âï°í ´ÙÀ½ÁÙ¿¡ °è¼Ó ³ª¿­Çϰųª ´Ù½Ã LOCAL Áö½Ã¾î¸¦ ¾²¸é µÈ´Ù. ¾î¼Àºí·¯´Â Áö¿ª º¯¼ö¸¦ ÃʱâÈ­ÇÏÁö ¾ÊÀ¸¹Ç·Î µû·Î ÃʱâÈ­¸¦ ÇÏ´Â ÇÁ·±×· Äڵ带 ³Ö¾îÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦´Â LOCAL Áö½Ã¾î¸¦ ÀÌ¿ëÇÏ¿© ¹è¿­ÇüÀÇ Áö¿ª º¯¼ö¸¦ »ý¼ºÇÏ°í 0À¸·Î ÃʱâÈ­ÇÏ´Â ¿¹Á¦ÀÌ ´Ù. arraysz EQU 20 aprocPROC USES di LOCAL var1[arraysz]:WORD, var2:WORD ... ... ; Áö¿ª º¯¼ö¸¦ 0À¸·Î ÃʱâÈ­ÇÑ´Ù. push ss pop es ; ss=es lea di, var1 ; ES:DI´Â array¸¦ °¡¸£Å°°Ô ; µÈ´Ù. mov cx, arraysz ; Ä«¿îÆ® sub ax, ax retp stosw ; 0À¸·Î ÃʱâÈ­ ... ... ret aproc ENDP ½ºÅÿ¡ Á¸ÀçÇÏ´Â Áö¿ª º¯¼ö¸¦ Áö¿ª º¯¼öÀÇ À̸§À¸·Î ÂüÁ¶¸¦ ÇÏ´õ·¡ µµ ¾î¼Àºí·¯´Â Áö¿ª º¯¼ö¸¦ BP·ÎºÎÅÍÀÇ »ó´ëÀû À§Ä¡·Î °£ÁÖÇÏ°Ô µÈ ´Ù. ±×·¯¹Ç·Î ´Ù¸¥ ÇÁ·Î½ÃÁ®´Â ÀÌ Áö¿ª º¯¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ¾ø°Ô µÈ ´Ù. ±×·±µ¥ Áö¿ª º¯¼ö¸¦ »ç¿ëÇÒ ¶§ ÁÖÀÇÇÒ Á¡ÀÌ Àִµ¥ ±×°ÍÀº Áö¿ª º¯¼ö°¡ BP¿¡ ´ëÇÑ »ó´ëÀû À§Ä¡·Î ³ªÅ¸³»¾îÁö¹Ç·Î BX¶ûÀº °áÇÕÀÌ µÉ ¼ö ¾ø´Ù´Â Á¡ÀÌ´Ù. BX¿Í BP´Â SI¿Í DI¶û °áÇÕÇÒ ¼ö ÀÖ´Ù. Áï [BP+BX+2]¿Í °°Àº Ç¥ÇöÀº ¾ÈµÇ°í [BP+SI+2]³ª [BP+DI+2]´Â °¡´ÉÇÏ ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ »ìÆ캸°í ¹«¾ùÀÌ À߸øed³·³ª ¾Ë¾Æº¸ÀÚ. index EQU 10 test PROC NEAR LOCAL array[index]:WORD ... ... mov bx, index ; mov array[bx], 5 ; À߸øµÈ ¹®Àå À§ÀÇ ¿¹Á¦¿¡¼­ array[bx]´Â [bp+bx+arrayoffset]°°ÀÌ bp¿Í bx°¡ °á ÇÕÇϹǷΠÀ߸øµÈ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ¿¡·¯´Â Áö¿ª º¯¼ö°¡ bpÀÇ »ó´ëÀû À§Ä¡·Î Ç¥ÇöµÈ´Ù´Â °ÍÀ» Àß ¸ð¸£¸é ã¾Æ³»±â ¾î·Á¿ì¹Ç·Î ÀÌ¿Í °°Àº Á¡À» ¾Ë¾ÆµÖ¾ßÇÑ´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ Á¦¸ñ: [°­ÁÂ] MASM 6.0 »ç¿ë¹ý 8/8 ------------------------------------------------------------------------------ [MASM6.0/8] È®ÀåµÈ ÇÁ·Î½ÃÁ® ±â´É(3) Àú¹ø °­Á¿¡¼­ ¼³¸íÇßµíÀÌ È£Ãâ °üÇà(calling convention)¿¡ µû¶ó¼­ ÆĶó¸ÞÅ͸¦ ½ºÅÿ¡ ³Ö´Â ¹æ½ÄÀº ´Þ¶óÁö°Ô µÈ´Ù. ±×·¯³ª ¾ÕÀ¸·Î ¼³¸íÇÏ °ÔµÉ INVOKE Áö½Ã¾î¸¦ ÀÌ¿ëÇϸé È£Ãâ °üÇà¿¡ »ó°ü¾øÀÌ ÀÚµ¿ÀûÀ¸·Î ¾Ë¸Â °Ô ÆĶó¸ÞÅ͸¦ ½ºÅÿ¡ ³Ö¾îÁÖ°í, ÇÁ·Î½ÃÁ® È£Ãâ¿¡ °ü·ÃµÈ ¿©·¯°¡Áö ÀÏ µéÀ» °ü¸®ÇØÁÖ´Â ±â´ÉÀ» ÇÑ´Ù. INVOKE Áö½Ã¾î¸¦ ÀÌ¿ëÇÏ·Á¸é, ¸ÕÀú PROC Áö½Ã¾î·Î ÇÁ·Î½ÃÁ®°¡ Á¤ÀÇµÇ ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ, C¾ð¾î¿¡¼­¿Í °°ÀÌ ÇÔ¼öÀÇ ÇÁ·ÎÅäŸÀÔ(prototype)À» ¾Õ¿¡´Ù Á¤ÀÇÇÒ ¼ö Àִµ¥, À̶§´Â PROTO¶ó´Â Áö½Ã¾î¸¦ ÀÌ¿ëÇϰԵȴÙ. ÀÌ´Â ¾î¼Àºí·¯¿¡°Ô ÇÔ¼ö°¡ ÇÊ¿ä·ÎÇÏ´Â ÀμöÀÇ °¹¼ö¿Í ŸÀÔÀ» ¾Ë·ÁÁÖ¾î ³ªÁß¿¡ INVOKE·Î ÇÔ¼ö°¡ È£ÃâµÇ¾úÀ» ¶§ °Ç³»¹Þ´Â ÀμöÀÇ °¹¼ö¿Í ŸÀÔÀ» ÀÚµ¿ÀûÀ¸·Î °Ë»çÇϵµ·Ï ÇÑ´Ù. 1.1 ÇÁ·Î½ÃÁ®ÀÇ ÇÁ·ÎÅäŸÀÔ(prototype) Á¤ÀÇÇϱâ À§¿¡¼­ ¸»ÇßµíÀÌ MASM 6.0¿¡¼­ÀÇ ÇÁ·ÎÅäŸÀÔÀº C ¾ð¾î³ª ´Ù¸¥ °í±Þ ¾ðÀÇ ÇÁ·ÎÅäŸÀÔ°ú ºñ½ÁÇÑ ±â´ÉÀ» ÇϰԵȴÙ. ÇÁ·Î½ÃÁ®ÀÇ ÇÁ·ÎÅäŸ ÀÔÀº ÇÁ·Î½ÃÁ®ÀÇ À̸§, ŸÀÔ, ±×¸®°í ¿É¼ÇÀ¸·Î ÆĶó¸ÞÅÍÀÇ ¸ðµç ÀÌ ¸§À» ³ÖÀ» ¼ö°¡ ¸í½ÃÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÅäŸÀÔÀº ´ëüÀûÀ¸·Î ÇÁ·Î±× ·¥ÀÇ ¸Ç óÀ½ºÎºÐÀ̳ª µû·Î ºÐ¸®µÈ ÀÎŬ·çµå(include) ÆÄÀÏ¿¡ À§Ä¡ ÇÑ´Ù. ÇÁ·ÎÅäŸÀÔÀº ƯÈ÷ ´Ù¸¥ ¸ðµâÀ̳ª ´Ù¸¥ ¾ð¾î¿¡¼­ ÇÁ·Î½ÃÁ®°¡ È£ÃâµÉ °æ¿ì À¯¿ëÇѵ¥, ÀÌ´Â ¾î¼Àºí·¯°¡ ŸÀÔÀ̳ª °¹¼ö°¡ ¸ÂÁö ¾Ê ´Â ÀμöµéÀ» üũÇÒ ¼ö ÀÖµµ·Ï Çϱ⠶§¹®ÀÌ´Ù. ÇÁ·Î½ÃÁ®ÀÇ ÇÁ·ÎÅäŸÀÔÀ» Á¤ÀÇÇÏ´Â °ÍÀº ¿É¼ÇÀ¸·Î Có·³ ²À ÇؾßÇÏ ´Â °ÍÀº ¾Æ´Ï´Ù. ±×·¯¹Ç·Î, MASM 5.XÀÌÇÏÀÇ ¹öÁ¯ ¹æ½ÄÀÎ PROC°ú CALLÀÌ¿ëÇÏ¿© ÇÁ·Î½ÃÁ®¸¦ È£Ãâ, ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ÇÁ·ÎÅäŸÀÔÀÇ Á¤ÀÇ ±¸¹®Àº ÇÁ·Î½ÃÁ® Á¤ÀÇ ±¸¹®¿¡¼­ ·¹Áö½ºÅÍ ¸®½º Æ®¿Í prologuearg ¸®½ºÆ®, ÇÁ·Î½ÃÁ®ÀÇ scope¸¦ Á¦¿ÜÇÏ°í´Â µ¿ÀÏÇÏ ´Ù. ¶ÇÇÑ, ÇÁ·ÎÅäŸÀÔÀº ÇÁ·Î½ÃÁ®¿Í °°ÀÌ ¾ð¾îÁ¾·ù(langtype)¿Í °Å ¸®(distance)¸¦ ³ªÅ¸³»´Â ¼Ó¼ºÀ» Á¤ÀÇÇÒ ¼ö Àִµ¥ ÀÌ ¼Ó¼ºµéÀÌ »ý ·«µÇ¸é .MODEL À̳ª OPTION LANGUAGE ¸í·É¹®¿¡ ÁØ°ÅÇÏ¿© Á¤ÇØÁø´Ù. ¶ÇÇÑ ÇÁ·Î½ÃÁ®¿¡¼­ Á¤ÀǵǴ :VARARG´Â ¿É¼ÇÀ¸·Î, ½áµµµÇ°í ¾È½áµµ µÈ´Ù. ÇÑ ÇÔ¼ö¿¡ ´ëÇØ, PROC¹®°ú PROTO¹®ÀÌ °°ÀÌ ³ª¿À¸é, µÑÀÇ ¼Ó¼º°ú ÆÄ ¶ó¸ÞÅÍÀÇ °¹¼ö, ÆĶó¸ÞÅÍÀÇ Å¸ÀÔÀÌ ÀÏÄ¡µÇ¾î¾ß ÇÑ´Ù. ÇÁ·ÎÅäŸÀÔÀ» Á¤ÀÇÇÏ´Â °¡À彬¿î ¹æ¹ýÀº ¿¡µðÅÍ·Î PROC¹®À» Ä«ÇÇÇÑ ÈÄ PROCÀ» PROTO·Î ¹Ù²Ù¾îÁÖ°í USES reglist¿Í prologuearg, visibility¸¦ Áö ¿ì´Â °ÍÀÌ´Ù. ¿¹) ; Procedure prototypes addup PROTO NEAR C, argount:WORD, arg2:WORD, arg3:WORD myproc PROTO FAR C, argcount:WORD, arg2:VARARG ; Procedure declarations addup PROC NEAR C, argount:WORD, arg2:WORD, arg3:WORD myproc PROC FAR C PUBLIC USES di, si, argcount:WORD, arg2:VARARG INVOKE·Î ÇÁ·Î½ÃÁ®¸¦ È£ÃâÇϸé, ¾î¼Àºí·¯´Â INVOKE¿¡¼­ ÁÖ¾îÁø ÀÎ ¼ö¿Í PROC¿¡¼­ Á¤ÀÇµÈ Àμö¸¦ ºñ±³ÇÏ¿© üũÇÑ´Ù. ¸¸¾à¿¡ µÑ »çÀÌ ÀÇ Å¸ÀÔÀÌ ¸ÂÀÌ ¾ÊÀ¸¸é, MASMÀº ¿¡¶ó¸¦ ³»°Å³ª, INVOKE·Î ÁÖ¾îÁø ŸÀÔÀ» ÇÁ·Î½ÃÁ®¿¡¼­ ¿ä±¸Çϴ ŸÀÔÀ¸·Î ¸Â°Ô ¹Ù²Ù°Ô µÈ´Ù. 1.2 INVOKE·Î ÇÁ·Î½ÃÁ® È£ÃâÇϱâ INVOKE´Â Àμö¸¦ ½ºÅÿ¡ ³Ö°í ÇÁ·Î½ÃÁ®¸¦ È£ÃâÇÏ´Â ÀÏ·ÃÀÇ ÇÁ·Î¼¼ ¼­ ¸í·É¾î¸¦ ÀÚµ¿ÀûÀ¸·Î »ý¼ºÇÑ´Ù. INVOKE´Â ¶ÇÇÑ ÇÁ·Î½ÃÁ®¸¦ È£Ãâ ÇÒ ¶§ ´ÙÀ½°ú °°Àº ÀÛ¾÷À» ÀÚµ¿ÀûÀ¸·Î ÇϰԵȴÙ. * Àμö¸¦ ±â´ëµÇ´Â ŸÀÔÀ¸·Î ¹Ù²Ù¾îÁØ´Ù. * Àμö¸¦ ¿Ã¹Ù¸¥ ¼ø¼­·Î ½ºÅÿ¡ ³Ö´Â´Ù. * ÇÁ·Î½ÃÁ®°¡ ¼öÇàÀ» ¸¶Ä£ÈÄ ½ºÅà ÇÁ·¹ÀÓÀ» ¾ø¾Ø´Ù. INVOKEÀÇ ±¸¹®Àº ´ÙÀ½°ú °°´Ù. INVOKE expression, [,arguments] ¿©±â¼­ expressionÀº ÇÁ·Î½ÃÁ®ÀÇ À̸§À» ³ªÅ¸³½´Ù. arguments´Â 12*2 ¿Í °°Àº expressionÀ̰ųª, ·¹Áö½ºÅÍ, ¶Ç´Â ADDR·Î ³ªÅ¸³»¾î Áö´Â exprssionÀÌ´Ù. ¿¹) addup PROTO NEAR C, argount:WORD, arg2:WORD, arg3:WORD myproc PROTO FAR C, argcount:WORD, arg2:VARARG addup PROC NEAR C, argount:WORD, arg2:WORD, arg3:WORD myproc PROC FAR C PUBLIC USES di, si, argcount:WORD, arg2:VARARG ÇÁ·ÎÅäŸÀÔ°ú ÇÁ·Î½ÃÁ® ±¸¹®ÀÌ À§¿Í °°ÀÌ ÁÖ¾îÁ³À» ¶§ INVOKE´Â ´ÙÀ½°ú °°ÀÌ ¾µ ¼ö ÀÖ´Ù. INVOKE addup, ax, x, y INVOKE myproc, bx, cx, 100, 10 ¾î¼Àºí·¯´Â ŸÀÔÀÌ ¾È¸Â´Â ÀμöµéÀ» Àû´çÇÑ Å¸ÀÔ¿¡ ¸ÂÃß¾î ¹Ù²Ù¾î ÁÙ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¸é À§ÀÇ addup ÇÁ·Î½ÃÁ®´Â WORDÇüŸÀÔÀ» ¿ä±¸ ÇÏÁö¸¸ ¾Æ·¡ÀÇ °æ¿ìµµ ¹®Á¦¾øÀÌ ¾µ ¼ö ÀÖ´Ù. * BYTE, SBYTE, WORD, SWORD * 8 ºñÆ® ¶Ç´Â 16ºñÆ® ·¹Áö½ºÅÍ * -32K ºÎÅÍ 64K ±îÁöÀÇ »ó¼ö * NEAR Æ÷ÀÎÅÍ ¸¸¾à¿¡ ¿ä±¸µÇ´Â ŸÀÔº¸´Ù ³Ñ¾î¿À´Â ÀμöÀÇ Å¸ÀÔÀÌ Å©±â°¡ ÀÛÀ» °æ ¿ì, ¾î¼Àºí·¯´Â ³Ñ¾î¿À´Â ŸÀÔÀÇ Å©±â¸¦ ´Ã¸®°Ô µÈ´Ù. 1.2.1 ¿¡¶ó ã±â ¾î¼Àºí·¯°¡ ÀμöÀÇ Å©±â¸¦ ´Ã¸®·Á°í ÇÒ ¶§, ¾î¶² ·¹Áö½ºÅ͸¦ ÀÌ ¿ëÇÏ°Ô µÇ´Âµ¥, ÀÌ´Â ·¹Áö½ºÅÍ°ªÀ¸·Î µé¾î¿À´Â ÀμöÀÇ °ª°ú Áߺ¹ µÉ ¼ö À־ ÀÌ´Â ¿¡¶óÀÇ ¿øÀÎÀÌ µÈ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°ÀÌ C ¾ð¾î ŸÀÔÀÇ È£ÃâÀÌ ÀÖ´Ù°í ÇÏÀÚ. INVOKE myprocA, ax, cx, 100, arg À§¿¡¼­ arg°¡ BYTE Å©±âÀÇ ÀμöÀÌ°í myprocA´Â ´Ù WORDÅ©±âÀÇ ÀÎ ¼ö¸¦ ¿ä±¸ÇÑ´Ù°í ÇÏ¸é ¾î¼Àºí·¯´Â BYTEÅ©±âÀÇ arg¸¦ WORD Å©±â·Î ´Ã·Á¼­ ½ºÅÿ¡ ³Ö¾î¾ß ÇÑ´Ù. Áï, ´ÙÀ½°ú °°Àº Äڵ带 »ý¼ºÇÏ°Ô µÈ´Ù. mov al, DGROUP:arg xor ah, ah push ax C´Â Àú¹ø °­Á¿¡¼­ ¸»ÇßµíÀÌ, Àμö¸¦ ¿ª¼øÀ¸·Î ½ºÅÿ¡ ³Ö´Â´Ù. Áï À§ÀÇ ¿¹¿¡¼­´Â arg, 100, cx, ax ¼øÀ¸·Î ³Ö´Â´Ù. ±×·¯³ª À§ÀÇ ÄÚµåó·³ arg¸¦ ´Ã¸®°Ô µÉ ¶§ ¾²´Â ·¹Áö½ºÅÍ°¡ axÀ̹ǷΠ¸ÇóÀ½ ÀÇ Àμö, ax´Â Áߺ¹µÇ°Ô µÇ¹Ç·Î ³»¿ëÀÌ ´Þ¶óÁö°Ô µÈ´Ù. ÀÌ °æ¿ì ¿¡´Â ¾î¼Àºí·¯°¡ ¿¡¶ó ¸Þ¼¼Áö¸¦ ³»°Ô µÈ´Ù. ÀÌ·± °æ¿ìÀº invoke ¸¦ ´Ù½Ã Àû´çÈ÷ °íÃÄÁÖ¾î¾ß ÇÑ´Ù. INVOKE´Â µÇµµ·ÏÀ̸é ÀμöÀÇ Å©±â¸¦ ´ÃÀ̱â À§ÇØ ÀûÀº ·¹Áö½ºÅÍ ¸¦ »ç¿ëÇÑ´Ù. ±×·¯³ª Àμö¸¦ ´Ã¸®°Ô µÇ¸é, ºÒ°¡ÇÇÇÏ°Ô ·¹Áö½ºÅÍ ¸¦ »ç¿ëÇÏ°Ô µÇ´Âµ¥, AX ·¹Áö½ºÅ͸¦ »ç¿ëÇÏ°Ô µÇ°í, ¾î¿¶§´Â DX ·¹Áö½ºÅ͵µ »ç¿ëÇÏ°Ô µÈ´Ù. °á°úÀûÀ¸·Î AL, AH, AX´Â ºó¹øÇÏ°Ô »ç¿ëµÇ¹Ç·Î ÀÌ ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇÏ¿© Àμö¸¦ ³Ñ±â´Â °ÍÀº µÇµµ·Ï ÀÌ¸é »ï°¡ÇÏ´Â °Ô ÁÁ°í ¸¹ÀÌ ¾²ÀÌÁö ¾Ê´Â DX°°Àº ·¹Áö½ºÅ͸¦ ¾² ´Â °ÍÀÌ ÁÁ´Ù. 1.2.2 »ý¼ºµÈ ÄÚµå °Ë»ç INVOKE¸¦ ÀÌ¿ëÇϸé À§¿Í °°ÀÌ ÀμöÀÇ Å©±â¸¦ ´ÃÀÌ°Ô µÇ´Â ÀÛ¾÷À» ÇÏ´Â Äڵ带 ÀÚµ¿ÀûÀ¸·Î »ý¼ºÇÏ°Ô µÈ´Ù. ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÈ ÄÚµå ¸¦ È®ÀÎÇÏ·Á¸é ÄÚ¸Çµå ¶óÀÎ(command-line) ¿É¼Ç¿¡¼­ /Sg ¿É¼ÇÀ» ÀÌ¿ëÇؼ­ ¸®½ºÆ® ÆÄÀÏÀ» º¸¸é ¾î¶»°Ô Äڵ尡 »ý¼ºed³·´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ´Ù. °­Á¸¦ ¸¶Ä¡¸é¼­... »ç½ÇÀº °­Á¸¦ ¸î¹ø ´õ ÇؾߵǴµ¥, Á¦°¡ °ð ±ºÀԴ븦 ÇÏ°Ô µÇ¾î ¼­ °­Á¸¦ ÀÌÂë ¸¶Ä¡°Ô µÇ´Ï Á˼ÛÇÏ°Ô µÇ¾ú½À´Ï´Ù. º¯º¯Ä¡ ¾ÊÀº °­Á¸¦ °ÔÀ¸¸£°Ô ¾²´À¶ó°í ¹Ì¾ÈÇÑ Á¡µµ ¸¹³×¿ä. ±×µ¿¾È µµ¿òÀÌ µÇ¼Ì´ÂÁö ¸ð¸£°Ú½À´Ï´Ù. ¼Û±¸½º·± ¸¶À½À¸·Î À̸¸ °­Á¸¦ ¸¶Ä¥±î ÇÕ´Ï´Ù. ¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡ .,; ±Û¾´ÀÌ ;,. Á¤ÀçÈì(õ»ç) .,; Á¦ ¸ñ ;,. [°­ÁÂ] MASM 6.0 »ç¿ë¹ý ¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬