Á¦¸ñ : Ư°­ ¾È³çÇϼ¼¿ä Ç㸣¹ÌÀÔ´Ï´Ù. ¿À´ÃÀº ÀζóÀÎ ¾î¼Àºí¸®¿¡ ´ë Çؼ­ ¾Ë¾Æº¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. Á¦°¡ ÇÏ°í ÀÖ´Â °­ÁÂÀÇ ´ëºÎºÐÀÇ ³»¿ëÀ» ÀÌÇØÇϱâ À§Çؼ­´Â ¾î¼Àºí¸®¿¡ ´ëÇÑ ±âÃÊ Áö½ÄÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. º¹ÀâÇÑ ºÎºÐ±îÁö´Â ÇÊ¿ä¾ø°í inline Assembly ¶ó´Â Æí¸® ÇÏ°í °£´ÜÇÑ Çü½Ä¿¡ ´ëÇؼ­¸¸ ¾Ë¾Æº¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. inline Assembly ¶ó´Â °ÍÀº °£´ÜÈ÷ ¸»Çؼ­ C ÀÇ ÇÔ¼ö¾È¿¡ ¾î¼Àºí¸® ÄÚµå ¸¦ Æ÷ÇÔ½ÃÅ°´Â ¹æ¹ýÀ» ÀǹÌÇÏ´Â °ÍÀÔ´Ï´Ù. ¿ø·¡´Â ±â°è¾î Äڵ带 Á÷Á¢ ½áÁÖ¾î¾ß ÇßÁö¸¸ asm À̶ó´Â Å°¿öµå¿¡ ÀÇÇؼ­ ¾î¼Àºí¸® ´Ï ¸ð´ÐÀ» Á÷Á¢ ½áÁÙ¼ö ÀÖ°Ô µÇ¾ú°í ÀÌ°ÍÀº ±×´ë·Î C °¡ ÄÄÆÄÀÏÇÏ´Â µµÁß¿¡ ³¢¿ö³Ö°Ô µË´Ï´Ù. ÀÌ°ÍÀ» Tc 2.0 ¿¡¼­´Â Tasm À» È£ÃâÇÏ ¿© ÄÄÆÄÀÏ ÇÏ°í,BC 2.0 ¿¡¼­´Â ÀÚü³»¿¡¼­ ÄÄÆÄÀÏ,ȤÀº Tasm À» È£ÃâÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀÇ ÀåÁ¡Àº ¿ì¼± °£ÆíÇÔ¿¡ ÀÖÀ¾´Ï´Ù. ÀÚ ½ÅÀÌ ¾²°í ½Í¾îÇÏ´Â ÄÚµåÀÇ Çü½Ä¸¸À» °£´ÜÈ÷ ±â¼úÇÒ ¼ö ÀÖÀ¸¸ç C ¿ÍÀÇ Àμö±³È¯ÀÌ °£´ÜÇÕ´Ï´Ù. µµÀÔÄÚµå,Å»ÃâÄÚµåÀÇ º¹ÀâÇÑ ±¸¼º À» »ý°¢ÇÒ ÇÊ¿ä°¡ ¾øÀ¸¸ç À̺κÐÀº C ÄÄÆÄÀÏ·¯°¡ ¸¸µé¾î ÁֹǷΠ¼Óµµµµ ¾î¼Àºí¸®·Î Á÷Á¢ ÀÛ¼ºÇÏ´Â °Í¿¡ ºñÇØ º° Â÷ÀÌ°¡ ¾øÀ¾´Ï ´Ù. (À̷лóÀ¸·Î´Â Á¶±Ý ´À¸². ºÒÇÊ¿äÇÑ µµÀÔÄڵ尡 ÀÖÀ» ¼ö ÀÖ À¸¹Ç·Î.) ±×·¡¼­ Àú´Â inline assembly ¸¦ ¾Ö¿ëÇÏ´Â ÆíÀÔ´Ï´Ù. ¹°·Ð ¾î¼Àºí¸® ÄÚµå·Î Á÷Á¢ ÀÛ¼ºÇÏ´Â °Íµµ ÁÁÁö¸¸ µð¹ö±ëµîÀÇ Ãø ¸é¿¡¼­ º¸¾Æµµ inline assembly ·Î ÀÛ¼ºÇÏ´Â °ÍÀÌ º¸´Ù Æí¸®ÇÕ´Ï ´Ù. BC++ 2.0 Àº ƯÈ÷ ÅëÇÕȯ°æ³»¿¡¼­ÀÇ inline Assembly ÀÇ Trace,·¹Áö½ºÅÍ °ªº¸±â,ÄÄÆÄÀÏ µîÀÌ °¡´ÉÇϹǷΠ°ÅÀÇ È¯»óÀûÀΠȯ°æÀ̶ó°í ÇÏ°ÚÀ¾´Ï´Ù. ±×·³ ÀÌ inline assembly ¸¦ »ç¿ëÇϱâ À§Çؼ­ ±âº»ÀûÀÎ ³»¿ëÀ» º¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ¿ì¼± ¸î°¡Áö ÁöÄÑ¾ß ÇÒ »çÇ×ÀÌ Àִµ¥ À̸¦ º¸°ÚÀ¾´Ï´Ù. 1. inline assembly ·Î µÈ ÇÔ¼ö¾È¿¡¼­ÀÇ C ÀûÀÎ »ç¿ë¹ýÀ» ¾ïÁ¦ ÇÑ´Ù. Áï C ÀÇ ¹®Àå°ú È¥¿ëÇÏÁö ¾Ê´Â´Ù. 2. Ȥ½Ã »ê¼ú½ÄÀ̳ª C ÇÔ¼ö È£ÃâµîÀ» ÇÒ ÀÏÀÌ ÀÖ´Ù¸é ÇÔ¼öÀÇ ¾Õ ºÎºÐ¿¡¼­ ÇÑ´Ù. inline assembly ÀÇ »çÀÌ¿¡ ³ÖÀ¸¸é ·¹Áö½ºÅÍ °ªÀÌ º¯ÇÒ À§ÇèÀÌ ÀÖ´Ù. ±×·³ ¾î¼Àºí¸®¿¡ ´ëÇÑ ³»¿ëÀ» °£´ÜÇÏ°Ô ¸ÕÀú ¾Ë¾Æº¸°ÚÀ¾´Ï´Ù.°£ ´ÜÇÑ ¾î¼Àºí¸® ÇÁ·Î±×·¡¹ÖÀ̶õ ¸î°³ ¾ÈµÇ´Â ¸í·É¾î¿Í ¸î°³ ¾ÈµÇ ´Â º¯¼ö(·¹Áö½ºÅÍ) ¸¦ °¡Áö°í ÇÁ·Î±×·¡¹Ö ÇÏ´Â °ÍÀ̶ó°í »ý°¢ÇÏ ¸é µË´Ï´Ù. ±×Áß ÁöÄѾßÇÒ ¸î°¡Áö »çÇ×ÀÌ ÀÖÀ¸¸ç À̰͸¸ ÁöŲ´Ù ¸é »ç½Ç °£´ÜÇÑ ¸ñÀû¿¡ ¾î¼Àºí¸®¸¦ »ç¿ëÇÏ´Â °ÍÀº ±×¸® ¾î·Á¿î ÀÏÀº ¾Æ´Õ´Ï´Ù. À§¿¡¼­ '¸î°³ ¾ÈµÇ´Â' º¯¼ö ¶ó´Â ¸»À» Çߴµ¥ ·¹Áö½ºÅÍÁß ¿ì¸®°¡ ÁÖ·Î »ç¿ëÇÒ °ÍÀº AX,BX,CX,DX,SI,DI,ES,DS ÀÔ´Ï´Ù. ÀÌ 7 °¡Áö¸¸ ¾Ë¸é ´ëÃæ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô µË´Ï ´Ù. ÀÌÁß AX : ¾îÅ¥¹°·¹ÀÌÅÍ. °è»êµî ´Ù¾çÇÑ ¸ñÀû¿¡ ¾²ÀÓ BX : ´Ù¾çÇÑ ¸ñÀû¿¡ ¾²ÀÏ ¼ö ÀÖÀ¸³ª º¸Åë ÁÖ¼ÒÁöÁ¤¿¡ ¾²ÀÓ CX : º¸Åë Ä«¿îÅÍ¿¡ ¾²ÀÓ DX : °ª º¸Á¸µî ´Ù¾çÇÑ ¸ñÀû¿¡ ¾²ÀÓ SI : ÁÖ¼ÒÁöÁ¤.. À妽º¿¡ ¾²ÀÓ (Source Index) DI : ÁÖ¼ÒÁöÁ¤.. À妽º¿¡ ¾²ÀÓ (Destination Index) ES : º¸Åë Destination Segment ·Î ¾²ÀÓ DS : º¸Åë Source Segment ·Î ¾²ÀÓ ÀÌÁß¿¡¼­ AX,BX,CX,DX ´Â 16 ºñÆ® ·¹Áö½ºÅÍÀ̸ç AX ´Â AH,AL ÀÇ 8 ºñÆ® ·¹Áö½ºÅÍ·Î ³ª´©¾î¼­ ¾µ ¼ö ÀÖÀ¾´Ï´Ù. BX,CX,DX µµ ¸¶Âù °¡ÁöÀÔ´Ï´Ù. À§¿¡¼­ ¼¼±×¸ÕÆ®¶ó´Â ¸»ÀÌ ³ª¿ÔÀ¾´Ï´Ù. ¿ì¸®°¡ »ç¿ë ÇÏ´Â 8088 ÇÁ·Î¼¼¼­ÀÇ °æ¿ì ÁÖ¼Ò¸¦ 16 ºñÆ®·Î °ü¸®ÇÕ´Ï´Ù. 80286,80386 Àº º¸´Ù Áøº¸µÈ ¹æ½ÄÀÌ ÀÖÁö¸¸ DOS »óÅ¿¡¼­ Real Mode ·Î ÀÛµ¿ÇÒ¶§´Â ¿ª½Ã 16 ºñÆ®·Î °ü¸®ÇÕ´Ï´Ù. 16 ºñÆ®À̸é 2^16 = 64 KB ¹Û¿¡ °ü¸®ÇÒ ¼ö ¾øÀ¾´Ï´Ù. ±×·¯³ª PC ´Â Segment : Offset À̶ó´Â Ç¥±â¹ýÀ¸·Î Á»´õ ¸¹Àº ¸Þ¸ð¸®¸¦ Áö½ÃÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. °ð Segment ¶õ ¸Þ¸ð¸®ÀÇ ¾î´À ºÎºÐÀ» ÁöÁ¤ÇÏ°Ô ¸¸µç °Í ÀÔ´Ï´Ù. Offset Àº ±× À§Ä¡ºÎÅÍÀÇ »ó´ë°ªÀÌ µÇ°ÚÀ¾´Ï´Ù. Offset Àº 16 bit °ªÀ̹ǷΠSegment Çϳª´ç Offset À¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¹üÀ§´Â 64 KB ·Î Á¦Çѵ˴ϴÙ. ½ÇÁ¦ Address = Segment << 4 + Offset ÀÌ µÇ°ÚÀ¾´Ï´Ù. ±×·¯´Ï±î 4 bit °¡ Ãß°¡µÇ¹Ç·Î 20 ºñÆ®·Î °ü¸®ÇÒ ¼ö ÀÖÀ¾´Ï´Ù. Áï 2^20 = 1 MB À̹ǷΠReal Mode ¿¡¼­ÀÇ ÃÖ´ë ÁÖ¼ÒÁöÁ¤ ¹üÀ§´Â 1 MB ÀÎ ¼ÀÀÔ´Ï´Ù. º¸Åë Æ÷ÀÎÅͳª ÇÔ¼öµî À» ´Ù·ê¶§ Near ¶Ç´Â Far ¶ó´Â ¸»À» ¾¹´Ï´Ù. Near ´Â ÂüÁ¶ÇÏ´Â ºÎºÐºÎÅÍ 64 KB À̳»¿¡ ÀÖ´Â,Áï °°Àº ¼¼±×¸ÕÆ®¾È¿¡ À§Ä¡ÇÒ ¼ö ÀÖ ´Â °ÍÀ» ¸»ÇÏ°í Far ´Â ±×·¸Áö ¸øÇÑ °ÍÀ» ¸»ÇÕ´Ï´Ù. ³»ºÎÀûÀ¸·Î º¸¸é Near ¶õ Offset ¸¸ °¡Áö°í ÂüÁ¶ÇÒ ¼ö ÀÖ´Â °Í,Far ´Â Segment ÀÇ °ª±îÁö ¾Ë¾Æ¾ß ÇÏ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. º¸Åë Segment ·¹ Áö½ºÅ͸¦ ´Ù·ç±â À§Çؼ­ ¿ì¸®´Â ES ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇÕ´Ï´Ù. ES ´Â ÇÔ¼ö³»ºÎ¿¡¼­ º¯°æÇصµ ÀúÀå/º¹±Í ÇØÁÖÁö ¾Ê¾Æµµ ÁÁ½À´Ï´Ù. ¾î¶² °æ¿ì´Â ÇØÁÖ¾î¾ß ÇÏ´Â °æ¿ìµµ ÀÖÁö¸¸ ´ëºÎºÐÀÇ °æ¿ì ÀÌ»óÀÌ ¾øÀ¾´Ï´Ù. ºí·°Àü¼Ûµî Çѱºµ¥¿¡¼­ ´Ù¸¥°÷À¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ°í ÀÚ ÇÑ´Ù¸é ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ°¡ Çϳª ´õ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. À̶§ DS ·¹Áö½ºÅ͸¦ »ç¿ëÇÕ´Ï´Ù. °ð DS:offset1 -> ES:offset2 ·ÎÀÇ Àü¼ÛÀÌ µÇ´Â °ÍÀÌÁÒ. ÀÌ°æ¿ì DS ¸¦ ¹Ýµå½Ã ÀúÀå/º¹±Í ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. DS ´Â ÇÔ¼ö³»¿¡¼­ ¸¶À½´ë·Î º¯°æµÇ¾î¼­´Â ¾ÈµÇ´Â °ªÀ̱⠶§¹®ÀÔ´Ï´Ù. ±×·¯¸é ÀÌÁ¦ Assembly ÀÇ ¸í·É¿¡ ´ëÇؼ­ Á¶±Ý ¾Ë¾Æ º¸°ÚÀ¾´Ï´Ù. ²À ÇÊ¿äÇÑ ¸í·ÉÀ» ±»ÀÌ ¸»ÇÏÀÚ¸é 1. ´Ü¼øÀü¼Û (Load or À̵¿) 2. °è»ê 3. ·çÇÁ 4. ÆÇ´Ü 5. ºÐ±â 6. ºí·°Àü¼Û Á¤µµ°¡ ÀÖ°ÚÀ¾´Ï´Ù. 1. ´Ü¼øÀü¼ÛÀÇ ´ëÇ¥ÀûÀÎ ¸í·ÉÀº mov ÀÔ´Ï´Ù. mov ´Â °ªÀ» ·¹Áö½º ÅÍ¿¡ Load Çϰųª Register-to-Register À̵¿µî¿¡ ¾²ÀÌ´Â °¡Àå ÈçÈ÷ ¾²ÀÌ´Â ¸í·ÉÀÔ´Ï´Ù. ¿¹¸¦ µé¾îº»´Ù¸é mov ax,bx <- bx ÀÇ ³»¿ëÀ» ax ·Î mov ax,5 <- ax ¿¡ 5 ¸¦ ³Ö´Â´Ù. ÀÌ·± ½ÄÀÌ µÇ°ÚÀ¾´Ï´Ù. ºñ½ÁÇÑ ¸í·ÉÀ¸·Î ÁÖ¼Ò¸¦ ·ÎµåÇÏ´Â ÇÔ¼ö°¡ ÀÖÀ¾´Ï´Ù. lds (load DS) , les (load ES) , lea (load offset) µîÀÌ ÀÖÀ¾´Ï´Ù. lds ¿Í les ´Â DS,ES ¿¡ ¾î¶² ¹öÆÛÀÇ ÁÖ¼Ò¸¦ ·Î µåÇÒ¶§ ¾²ÀÔ´Ï´Ù. ÀÌ·± ¹öÆÛµéÀº Far °Å¸®,Áï ´Ù¸¥ ¼¼±×¸ÕÆ®¿¡ ÀÖ´Â °æ¿ì°¡ ´ëºÎºÐÀ̹ǷΠ( C ¿¡¼­ ³Ñ°ÜÁØ ¹öÆÛµµ ¸¶Âù°¡ Áö.Large Model ÀÇ °æ¿ì ) ¼¼±×¸ÕÆ®¿Í ¿É¼ÂÀ» Çѹø¿¡ ·ÎµåÇØ¾ß ÇÕ´Ï´Ù. À̸¦ ÇàÇØÁÖ´Â ÇÔ¼ö°¡ ¹Ù·Î lds,les ÀÎ °ÍÀÔ´Ï´Ù. ¸¸ÀÏ buff ÀÇ ÁÖ¼Ò¸¦ segment : ds, offset : si ·Î ÇÏ°íÀÚ Çϸé lds si,buff ÇÏ¸é µË´Ï´Ù. segment : es , offset : di ·Î ÇÏ°íÀÚ Çϸé les di,buff °¡ µÇ°ÚÁÒ. ½ÇÁ¦·Î ds ´Â si ¿Í ¦À»,es ´Â di ¿Í ¦À» ÀÌ·ç¾î ºí·°Àü¼ÛµîÀ» ÇàÇÒ¶§ ¾²À̹ǷΠÀß ¾Ë¾ÆµÑ ÇÊ¿ä°¡ ÀÖÀ¾´Ï´Ù. ±×·³ ÁÖ¼Ò ÁöÁ¤¹ý¿¡ ´ëÇؼ­ Á¶±Ý ¾Ë¾Æº¸°ÚÀ¾´Ï´Ù. ·¹Áö½ºÅ͸¦ [] ·Î ½Î¸é ·¹Áö½ºÅÍÀÇ °ªÀ» ÁÖ¼Ò·Î ÇÑ ¸Þ¸ð¸®°ªÀ» ¸»ÇÕ´Ï´Ù. ±×·±µ¥ AX,CX,DX ´Â ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ¾µ ¼ö ¾øÀ¾´Ï´Ù. ±×·¡¼­ º¸Åë BX ¸¦ ÁÖ¼ÒÁöÁ¤ ·¹Áö½ºÅÍ·Î ¸¹ÀÌ ¾²´Â °ÍÀÔ´Ï´Ù. SI,DI µµ ÀÌ·¯ÇÑ Ã³¸®°¡ °¡´ÉÇÕ´Ï´Ù. ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ¿Í ÇÔ²² Ç¥½ÃÇÒ¶§´Â ES:[DI] ó·³ ³ªÅ¸³¾ ¼ö ÀÖÀ¾´Ï´Ù. ¶ÇÇÑ [BX+DI] ¶Ç´Â [BX+SI] ó·³µµ °¡´ÉÇÕ´Ï´Ù. ÀÌ´Â BX ¸¦ Base ·Î Çؼ­ DI ³ª SI ¸¦ Index ·Î »ç¿ëÇÏ°Ô ÇÏ´Â °ÍÀ» °¡´ÉÄÉ ÇÕ´Ï´Ù. Àú´Â º¸Åë es:[di] ³ª ds:[si] ¿Í °°Àº Çü½ÄÀ» ¸¹ÀÌ ¾¹´Ï´Ù. ¿¹¸¦ µé¸é char* ÇüÀÇ buff ÀÇ Ã¹¹ø° ¹ÙÀÌÆ®¸¦ ah ¿¡ ´ã°í ½Í´Ù¸é lds si,buff mov ah,ds:[si] ÇÏ¸é µË´Ï´Ù. 2. °è»êÀÇ ´ëÇ¥ÀûÀÎ ¸í·ÉÀº µ¡¼À,»¬¼ÀµîÀÇ »ê¼ú ¿¬»ê°ú ½¬ÇÁÆ®¿¬ »ê,and µîÀÇ ³í¸®¿¬»ê.. ÀÌ·¸°Ô ¼¼°¡Áö Á¤µµ¸¦ ¾Ë¾Æ µÎ¸é ÆíÇÕ´Ï ´Ù. ¹°·Ð º¹ÀâÇÑ ¸í·É¾îµéµµ ¸¹ÀÌ ÀÖÁö¸¸ ¿©±â¼­´Â ±âº»ÀûÀÎ ¸í ·É¸¸À» ¾Ë¾Æº¸µµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. ¿ì¼± µ¡¼À¸í·ÉÀº add ÀÔ´Ï´Ù. »¬ ¼ÀÀº sub,°ö¼ÀÀº mul À» ¾¹´Ï´Ù. ´Ü mul Àº Àμö°¡ ÇϳªÀÔ´Ï´Ù. ´ë»óÀº ¾îÅ¥¹°·¹ÀÌÅÍ°¡ µË´Ï´Ù. ¾Æ·¡¸¦ º¾½Ã´Ù. mov ax,80 mov bx,y mul bx Çϸé ax ¿¡´Â 80*y °¡ ÀúÀåµË´Ï´Ù. ¶Ç Àμö°¡ ÇϳªÀÎ ´ëÇ¥ÀûÀÎ ¿¹·Î´Â 1 À» Áõ°¡½ÃÅ°´Â ¸í·ÉÀÎ inc,1 À» °¨¼Ò½ÃÅ°´Â ¸í·ÉÀÎ dec °¡ ÀÖÀ¾´Ï´Ù. add ax,1 º¸´Ù´Â inc ax °¡ ºü¸£¹Ç·Î ÀÌ°ÍÀ» »ç¿ë ÇÕ´Ï´Ù. ¶ÇÇϳª, adc ¸í·ÉÀÌ Àִµ¥ µ¡¼ÀÀ» ¼öÇàÇÒ¶§ Carry Ç÷¡ ±×µµ ´õÇÕ´Ï´Ù. ÀÌ°ÍÀº Carry Ç÷¡±×ÀÇ °ªÀ» ȹµæÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ ¾²¸é µË´Ï´Ù. ´ÙÀ½,½¬ÇÁÆ®¿¬»êÀ» À§Çؼ­´Â ¿ÞÂÊ ½¬ÇÁÆ®ÀÎ shl,¿À¸¥ÂÊ ½¬ÇÁÆ®ÀÎ shr,¿À¸¥ÂÊ È¸ÀüÀÎ ror,¿ÞÂÊ È¸ÀüÀÎ rol ÀÌ ÀÖÀ¾´Ï´Ù. Carry µµ Æ÷ÇÔÇؼ­ ȸÀüÇÒ ¼ö ÀÖ´Â ¸í·ÉµîÀÌ ÀÖ±ä ÇÏ Áö¸¸ ¿©±âÀÖ´Â ¸í·ÉÀº ¸ðµÎ ·¹Áö½ºÅ͸¸À» ȸÀü/½¬ÇÁÆ®Ç쵂 ³ª°¡ ´Â ºñÆ®¸¦ Carry ·Î ³Ö±â¸¸ ÇÕ´Ï´Ù. ´Ü ÀÌ ¸í·ÉµéÀÇ ½¬ÇÁÆ®/ȸÀü Ƚ¼ö¿¡´Â 1 ¶Ç´Â cl ·¹Áö½ºÅ͸¸ÀÌ ¿Ã ¼ö ÀÖ´Ù´Â Á¡À» ±â¾ïÇϼ¼ ¿ä. Áï shl ax,1 ȤÀº shl ax,cl ÀÇ ÇüŸ¸ÀÌ °¡´ÉÇÕ´Ï´Ù. ax ÀÚ ¸®¿¡ ÁÖ¼Ò°¡ ¿À´Â °ÍÀº »ó°ü¾øÁö¸¸¿ä.. ¿ÞÂÊÀ¸·Î ½¬ÇÁÆ® ÇÏ´Â °Í Àº 2 ¸¦ °öÇÏ´Â °ÍÀÌ°í,¿À¸¥ÂÊÀ¸·Î ½¬ÇÁÆ®ÇÏ´Â °ÍÀº 2 ·Î ³ª´©´Â °Í°ú °°±â ¶§¹®¿¡ ´À¸° Mul ¸í·ÉµîÀ» ´ë½ÅÇϴµ¥ ¾²À̱⵵ ÇÕ´Ï ´Ù. ±×·³ ³í¸® ¿¬»êÀ» º¸°ÚÀ¾´Ï´Ù. and,or,xor,not À» ¾Ë¾Æ¾ß ÇÕ ´Ï´Ù. and,or,xor Àº ¿¬»êÇ×À» µÎ°³ °¡Áý´Ï´Ù. and ´Â º¸Åë Bitmasking Çϴµ¥ ¾²ÀÔ´Ï´Ù. Áï mov bx,0f0h mov ax,somevalue and ax,bx ´Â ax ¿¡ ÀúÀåµÇ¾î ÀÖ´ø 16 ºñÆ® °ªÁß ÇÏÀ§¹ÙÀÌÆ®ÀÇ »óÀ§ 4 ºñÆ® ¸¸À» º¸Á¸ÇÏ°í ³ª¸ÓÁö¸¦ 0 À¸·Î ÇÕ´Ï´Ù. OR Àº ¾î¶² ºñÆ®¸¦ °­Á¦ ·Î 1 ·Î ÇÏ°í ½ÍÀ»¶§ »ç¿ëÇϸç not Àº ¿¬»êÇ×ÀÌ 1 °³À̸ç 1 ÀÇ º¸¼ö¸¦ ÃëÇÏ°í ½ÍÀ»¶§,Áï °¢ ºñÆ®¸¦ ¹ÝÀüÇÒ¶§ ¾²ÀÔ´Ï´Ù. Âü°í·Î 2 ÀÇ º¸¼ö´Â neg ¸¦ ¾²¸é µË´Ï´Ù. xor Àº º¸Åë ·¹Áö½ºÅ͸¦ Clear ÇÒ¶§ ¾²ÀÔ´Ï´Ù. xor ax,ax °¡ mov ax,0 º¸´Ù ºü¸¨´Ï´Ù. 3. ·çÇÁ´Â cx ·¹Áö½ºÅÍ¿Í loop ¸í·ÉÀ» ÀÌ¿ëÇؼ­ ±¸ÇöÇÕ´Ï´Ù. Áï mov cx,5 lp1: . . loop lp1 Çϸé lp1 ~ loop ±îÁö¸¦ 5 ¹ø ¼öÇàÇÕ´Ï´Ù. cx ÀÇ °ªÀº loop ¸¦ °ÅÄ¥¶§ ¸¶´Ù 1 ¾¿ °¨¼ÒÇÏ°Ô µË´Ï´Ù. ¸¸¾à nested loop,Áï Áߺ¹·ç ÇÁ¸¦ ¸¸µé·Á¸é ¾î¶»°Ô µÉ±î¿ä.. ¿ÜºÎ·çÇÁ´Â 10 ¹ø,³»ºÎ·çÇÁ´Â 5 ¹ø µ·´Ù°í ÇսôÙ. mov cx,10 lp0: push cx lp1: mov cx,5 . . loop lp1 pop cx loop lp0 À§¿Í °°ÀÌ ÇÕ´Ï´Ù. push ´Â ½ºÅÿ¡ ·¹Áö½ºÅ͸¦ ÀúÀåÇÏ´Â ¸í·ÉÀÌ °í pop Àº ½ºÅÿ¡¼­ °ªÀ» Àоî¿À´Â ¸í·ÉÀÔ´Ï´Ù. ÀÌó·³ ÀÌÁß·çÇÁ ¸¦ ±¸¼ºÇÒ¶§ »ç¿ëÇÏ°í,¾î¶² °ªÀ» Àӽ÷Πº¸Á¸ÇÒ¶§ ¾²±âµµ ÇÕ´Ï ´Ù. ¿¹¸¦ µé¸é push ax . somefunction() . pop ax ó·³ C ÀÇ ÇÔ¼ö¸¦ È£ÃâÇؾ߸¸ ÇÒ¶§ somefunction ÀÌ ³»ºÎ¿¡¼­ AX ·¹Áö½ºÅ͸¦ º¯°æ½ÃÄѹö¸°´Ù°í Çϸé À̸¦ º¸Á¸Çϱâ À§Çؼ­´Â À§¿Í °°ÀÌ ÇÏ¸é µÇ´Â °ÍÀÌÁÒ. loop ¸í·ÉÀº ÇϳªÀÇ ¾àÁ¡ÀÌ Àִµ¥.. ·ç ÇÁ¸¦ ±¸¼ºÇÒ ¼ö ÀÖ´Â ¸í·É¾î±ºÀÌ 128 byte ¸¦ ³Ñ¾î¼­´Â ¾ÈµË´Ï ´Ù. ¿Ö³ÄÇϸé loop ¸í·ÉÀº ÀÏÁ¾ÀÇ '»ó´ëÁ¡ÇÁ' À̱⠶§¹®ÀÔ´Ï´Ù. Áï À§ÀÇ ¿¹¶ó¸é lp1~loop1 , lp0~loop0 »çÀÌ°¡ 128 byte ¸¦ ³ÑÀ¸ ¸é ¾ÈµË´Ï´Ù. ÀÏ´Ü '»ó´ëÁ¡ÇÁ' ´Â ¾î¶² ÁöÁ¡À» ±âÁ¡À¸·Î º¯À§¸¸ À» °¡Áö°í Á¡ÇÁÇϹǷΠ128 ¹ÙÀÌÆ® ÀÌ»óÀÇ Â÷ÀÌ´Â Á¡ÇÁÇÏÁö ¸øÇÑ ´Ù°í¸¸ ¾Ë¾ÆµÎ½Ê½Ã¿ä.TASM ÀÇ °æ¿ì Ưº°ÇÑ ±Øº¹¹æ¹ýÀÌ ÀÖ±â´Â ÇÏ Áö¸¸ ÀüÅëÀûÀÎ ¹æ¹ýÀº ÆÇ´Ü°ú 'Àý´ëÁ¡ÇÁ' ¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ´Â ÆÇ´Ü,ºÐ±â¸í·ÉÀ» º»ÈÄ¿¡ ´Ù½Ã ¼³¸íÇϵµ·Ï ÇÏ°ÚÀ¾´Ï´Ù. 4. ÆÇ´ÜÀº cmp ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. cmp ¸í·ÉÀº ·¹Áö½ºÅ͸¦ ƯÁ¤ °ª°ú ºñ±³ÇÏ¿© Flag register ÀÇ ¿©·¯°¡Áö °ªÀ» º¯°æ½ÃÄÑ ÁÝ´Ï ´Ù. Flag Register ÀÇ °ªÁß Áß¿äÇÏ°Ô ¾²ÀÌ´Â °ÍÀ¸·Î S (sign),C (carry) ,Z (Zero) °¡ ÀÖÀ¾´Ï´Ù. À̹ۿ¡µµ O (overflow),P (Parity) µîÀÌ ÀÖÁö¸¸ ÀÌ°ÍÀº Àß ¾²ÀÌÁö ¾Ê½À´Ï´Ù.S ´Â °è»ê°á°ú °¡ À½¼öÀ϶§ 1 ÀÌ µË´Ï´Ù. C ´Â ½¬ÇÁÆ® µÇ¾î Out µÈ ºñÆ®°¡ 1 ÀÏ ¶§,ȤÀº 8 ºñÆ® ·¹Áö½ºÅÍ¿¡ ´õÇÑ °á°ú°¡ 8 ºñÆ® °ªÀ» ³Ñ¾î¼­´Âµî Out µÈ ºñÆ®°¡ 1 À϶§ C µµ 1 ÀÌ µË´Ï´Ù. Z ´Â ¿¬»ê°ªÀÌ 0 À϶§ 1 ÀÌ µË´Ï´Ù. Flag ·¹Áö½ºÅÍ´Â add,sub µî¿¡µµ º¯ÇÏÁö¸¸ cmp ¸í ·ÉÀÇ Æ¯Â¡Àº ¿¬»êÇ×ÀÇ °ªÀ» Á÷Á¢ º¯È­½ÃÅ°Áö ¾Ê°íµµ Flag ·¹Áö½º Å͸¦ º¯È­½ÃŲ´Ù´Â Á¡ÀÔ´Ï´Ù.Áï cmp ax,bx ´Â ax-bx ÀÇ ¿¬»ê°á°ú ¸¦ Flag ·¹Áö½ºÅÍ¿¡ Àû´çÈ÷ ¼¼ÆÃÇÑ ¼ÀÀÌÁÒ.ÀÌÁ¤µµ ¾Ë¾ÆµÎ½Ã°í ºÐ ±â¸¦ º¸¼¼¿ä. 5. inline assembly ¿¡¼­´Â ¾î¼Àºí¸®¾î¸¦ asm À̶ó´Â Å°¿öµå µÚ ¿¡ ¾²¸é µË´Ï´Ù. À̶§ ¶óº§Àº ±× ¾Õ¿¡ ¾¹´Ï´Ù. ºÐ±â´Â ¹«Á¶°Ç ºÐ ±â¿Í Á¶°Ç ºÐ±â°¡ Àִµ¥ ¹«Á¶°Ç ºÐ±â¸í·ÉÀÎ jmp ´Â Àý´ëÁ¡ÇÁÀÔ ´Ï´Ù. Áï ¹«Á¶°Ç ºÐ±â¸¦ Ç쵂 128 ¹ÙÀÌÆ®ÀÇ Á¦ÇÑ¿¡ °É¸®Áö ¾Ê½À ´Ï´Ù. Á¶°ÇºÐ±â´Â ¾î¼Àºí·¯ÀÇ ¿É¼Ç¿¡ µû¶ó¼­ ´Ù¸¥µ¥ º¸Åë »ó´ëÁ¡ ÇÁ·Î ¹ø¿ªÇÕ´Ï´Ù. Á¶°Ç ºÐ±â¶õ Flag Register ¸¦ Á¶»çÇÏ¿© Á¡ÇÁ ÀÇ ¿©ºÎ¸¦ °áÁ¤Çϴµ¥ º¹ÀâÇÏ°Ô »ý°¢ÇÒ °Í ¾øÀÌ ´ÙÀ½ÀÇ ¸í·É¸¸ ¾Ë¾ÆµÎ¸é µË´Ï´Ù. je ; °°À»¶§ (Zero flag = 1) jne ; °°Áö ¾ÊÀ»¶§ (Zero flag = 0) jb ; ÀÛÀ»¶§ (unsigned Çü ¿¡¼­) ja ; Ŭ¶§ (unsigned Çü) jl ; ÀÛÀ»¶§ (signed Çü) jg ; Ŭ¶§ (signed Çü) jbe ; jb or je = jna jae ; ja or je = jnb jge ; jg or je = jnl jle ; jl or je = jng ÀÌµé ¸í·ÉµéÀº cmp ¸í·É µÚ¿¡ º¸Åë ¿É´Ï´Ù. À§¿¡¼­ unsigned,signed ¸¦ ±¸ºÐÇÑ°ÍÀº Çü (Type) ¶§¹®ÀÔ´Ï´Ù. 0x8000 Àº ºÎÈ£°¡ ÀÖ°Ô º¸¸é À½¼öÀ̹ǷΠ0x2000 º¸´Ù ÀÛ½À´Ï´Ù. ±×·¯³ª Unsigned ÇüÀ¸·Î º¸¸é 0x8000>0x2000 ÀÌ µË´Ï´Ù.±×·¯ÇÑ Â÷ÀÌ°¡ jb ¿Í jl,ja ¿Í jg »çÀÌ¿¡ ÀÖ´Â °ÍÀÔ´Ï´Ù. ¾Æ·¡ÀÇ ¿¹Á¦´Â ax °¡ 5 º¸´Ù ÀÛÀ¸¸é go1 ·Î °¡°í ¾Æ´Ï¸é go2 ·Î °©´Ï´Ù. asm cmp ax,5 asm jl go1 asm jmp go2 go1: asm .. . . go2: asm .. . . ±×·³ ·çÇÁ¿¡¼­ ¸»Çß´ø '»ó´ëÁ¡ÇÁ' ¿¡ÀÇ ÇØ°áÀ» º¾½Ã´Ù. ¿¹¸¦ µé ¾î ¾Æ·¡ÀÇ ·çÇÁ¸¦ º¾½Ã´Ù. mov cx,5 lp1:. . loop lp1 jmp lp1 temp1: . . cx ´Â 1 ¾¿ °¨¼ÒÇϹǷΠ·çÇÁÀÇ ¸¶Áö¸·¿¡¼­ 0 ÀÌ µÇ¾úÀ» ¶§ ´ÙÀ½ ´ÙÀ½¹®ÀåÀ¸·Î ÁøÇà½ÃÅ°°í 0 ÀÌ ¾Æ´Ï¸é cx ¸¦ 1 °¨¼Ò½ÃÅ°°í 'Àý´ë Á¡ÇÁ' jmp ¸í·ÉÀ¸·Î ·çÇÁÀÇ Ã³À½À¸·Î µ¹·Á³õ½À´Ï´Ù. 6. ºí·°Àü¼Û¸í·É¿¡ ¸¹ÀÌ ¾²ÀÌ´Â °ÍÀº movsb,movsw °¡ ÀÖÀ¾´Ï´Ù. ¾ÕÀÇ °ÍÀº ¹ÙÀÌÆ®´ÜÀ§ Àü¼Û,µÚÀÇ °ÍÀº ¿öµå(16 bit) ´ÜÀ§ Àü¼ÛÀÔ ´Ï´Ù. µÚÀÇ °ÍÀÌ ¼Óµµ»ó ºü¸£Áö¸¸ Ȧ¼ö ¹ÙÀÌÆ®´Â Àü¼ÛÇÒ ¼ö ¾ø´Â ¾àÁ¡ÀÌ ÀÖÀ¾´Ï´Ù.º¸ÅëÀÇ °æ¿ì movsb ¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. Ư¼öÇÑ ÇÁ·Î±×·¥¿¡¼­´Â movsb ¸¦ movsw ·Î ´ë½ÅÇÏ¿© Àü¼ÛÇϱ⵵ ÇÏÁö¸¸ ¿©±â¿¡¼­´Â ¾ð±ÞÇÏÁö ¾Ê°ÚÀ¾´Ï´Ù. movsb ¸í·ÉÀº DS:[SI] ¿¡¼­ ES:[DI] À¸·Î CX ¹ø¸¸Å­ Àü¼ÛÇϸç DF (direction Flag) ÀÇ °ª¿¡ µû¶ó ÇѹÙÀÌÆ® Àü¼ÛÇÑÈÄ SI,DI °ªÀ» °áÁ¤ÇÕ´Ï´Ù. DF °¡ 1 À̸é SI,DI ¸ðµÎ 1 À» »©ÁÝ´Ï´Ù. ±×·¯³ª DF °¡ 0 À̸é SI,DI ¸ðµÎ 1 À» ´õÇØÁÝ´Ï´Ù. ±×·¯´Ï±î DF °¡ 1 À϶§´Â Àü¼ÛÇÏ°íÀÚ ÇÏ´Â ¸¶Áö ¸· ºÎºÐÀ» SI,DI °¡ °¡¸®Å°µµ·Ï ÇØ¾ß ÇÏ°í DF °¡ 0 À϶§´Â ùºÎ ºÐÀ» °¡¸®Å°°Ô ÇÕ´Ï´Ù. º¸Åë DF ´Â 0 À¸·Î ³õ°í Àü¼ÛÇÕ´Ï´Ù. ¿Ö ³ÄÇÏ¸é ¹öÆÛÀÇ Ã¹ÁÖ¼Ò¸¦ ¾Ë¾Æ³»±â°¡ ½±±â ¶§¹®ÀÔ´Ï´Ù. DF ¸¦ 0 À¸·Î ÇÏ´Â ¸í·ÉÀº cld ÀÔ´Ï´Ù. DF ¸¦ 1 ·Î ÇÏ·Á¸é std ÇÏ¸é µË´Ï ´Ù. ÀÌ ¸í·ÉÀ» ¼öÇàÇÑ ÈÄ¿¡ movsb ¸¦ ¼öÇàÇϴµ¥.. ±×³É ¾²¸é ÇÑ ¹ø¹Û¿¡ ¼öÇàÇÏÁö ¾ÊÀ¸¹Ç·Î ¾Æ·¡¿Í °°ÀÌ ÇÕ´Ï´Ù. REP movsb ¾ÕÀÇ REP ´Â ¹Ýº¹Áö½Ã¾îÀÔ´Ï´Ù. ÀÌ°ÍÀÌ ÀÖ¾î¾ß CX ¹ø¸¸Å­ Àü¼ÛÇÏ °Ô µË´Ï´Ù. ºí·° Àü¼Û¸í·ÉÀº ¸¹Àº µ¥ÀÌÅ͸¦ ºü¸£°Ô Àü¼ÛÇÏ°íÀÚ ÇÒ¶§ ´Ù¸¥ ¾î¶² ¸í·Éº¸´Ùµµ È¿À²ÀûÀÔ´Ï´Ù. ¸¹Àº µ¥ÀÌÅ͸¦ ´Ù·é´Ù ¸é ÀÌ ¸í·ÉÀ» ¾²´Â °ÍÀÌ °¡Àå ÁÁÁÒ. ¾Æ·¡ÀÇ ¿¹´Â buff1 ¿¡¼­ buff2 ·Î number ¸¸Å­ Àü¼ÛÇÏ´Â ¿¹ÀÔ´Ï´Ù. lds si,buff1 les di,buff2 mov cx,number cld REP movsb Ç㸣¹Ì ÇÑ±Û ¶óÀ̺귯¸®ÀÇ Scroll,Image Á¦¾îµî ´ëºÎºÐÀÇ ±×·¡ÇÈ ºÎºÐÀÌ ÀÌ ¸í·ÉÀ» ÀÌ¿ëÇÏ°í ÀÖÀ¾´Ï´Ù. ºñ½ÁÇÑ ºí·°Á¦¾î ¸í·ÉÀ» Çϳª ´õ ¾Ë¾Æº¸°ÚÀ¾´Ï´Ù. stosb ´Â ƯÁ¤ °ªÀ¸·Î ¸Þ¸ð¸®¸¦ ä¿ï¶§ À¯¸®ÇÕ´Ï´Ù. À̶§ ä¿ì´Â °ªÀº al ·¹Áö½ºÅÍ¿¡ ³Ö½À´Ï´Ù. les di,buff1 mov cx,number mov al,WRITEVALUE cld REP stosb Çϸé buff1 À» WRITEVALUE ·Î number ¼ö¸¸Å­ ä¿ì°Ô µË´Ï´Ù. Çã ¸£¹ÌÇѱ۶óÀ̺귯¸®¿¡¼­´Â Boxfill ¿¡ ÀÌ ¸í·ÉÀ» ÀÌ¿ëÇÏ°í ÀÖÀ¾ ´Ï´Ù. ¿ª½Ã ¸¹Àº µ¥ÀÌÅÍÀÇ Ã³¸®¿¡ »ó´çÈ÷ È¿°úÀûÀÎ ¸í·ÉÀÔ´Ï´Ù. Áö±Ý±îÁö ¼³¸íÇÑ ³»¿ëÀ» Âü°íÇÑ´Ù¸é °£´ÜÇÑ inline assembly ÇÁ ·Î±×·¥ÀÇ ÀÛ¼ºÀÌ °¡´ÉÇϸ®¶ó°í º¾´Ï´Ù. ÀÏ´Ü Á¦ °­Á¸¦ ÀÌÇØÇÏ´Â µ¥¿¡´Â ¹«¸®°¡ ¾øÀ» °ÍÀÔ´Ï´Ù. ±×·³ ¸¶Áö¸·À¸·Î ¿¹Á¦¸¦ Çϳª º¸ ÀÌ°í ³¡³»°ÚÀ¾´Ï´Ù. ¾Æ·¡ ¿¹Á¦´Â buff ¶ó´Â char * ÇüÀÇ Æ÷ÀÎÅÍ ¿Í num À̶ó´Â integer ÇüÀÇ Àμö¸¦ ¹Þ¾Æ¼­ buff ÀÇ °¢¹ÙÀÌÆ®¸¦ num °³ ¸¸Å­ reverse ÇÏ´Â ( 1 ÀÇ º¸¼ö¸¦ ÃëÇÔ ) ¿¹Á¦ÀÔ´Ï´Ù. void reverse(char *buff,int num) { asm les di,buff asm mov cx,num lp1: asm mov ah,es:[di] asm not ah asm mov es:[di],ah asm inc di asm loop lp1 } ÇÔ¼ö³»¿¡¼­ ES ·¹Áö½ºÅ͸¦ º¯°æÇÏ°í ÀÖÀ¸³ª ES ÀÇ °æ¿ì Ưº°ÇÑ °æ¿ì°¡ ¾Æ´Ï¶ó¸é º¸Á¸/º¹±ÍÇØÁÙ ÇÊ¿ä´Â ¾øÀ¾´Ï´Ù. ±×·³.. µµ¿òÀÌ µÇ¼Ì±â¸¦ ..Ç㸣¹Ì.. !!!