¾ÆÁ÷µµ ¾î¼Àºí¸®¾ð¾î°¡ ÇÊ¿äÇÑ°¡. -------------------------------------------------------------------------------- ¾î¼Àºí¸® ¾ð¾îÀÇ Áö½ÄÀº °í¼Ó¿¬»ê ·çƾÀ» ÀÛ¼ºÇϱâÀ§Çؼ­¸¸ ÇÊ¿äÇÑ °ÍÀÌ ¾Æ´Ï¶ó.¸¶ÀÌ Å©·Î ÄÄÇ»ÅÍÀÇ ½Ã½ºÅÛÀ» À߾˱â À§ÇÏ¿© ÇÊ¿äÇÑ°ÍÀÌ´Ù. ¸Þ¸ð¸®»óÀÇ µ¥ÀÌÅͳª I/O ±â±â¸¦ Á÷Á¢ ¾×¼¼½º Çϴµî, °í±Þ¾ð¾î¿¡¼­´Â ÇÒ¼ö¾ø´Â Á¶ÀÛ À» ÇÒ¼öÀÖ´Ù ¶ó´Â °ÍÀÌ´Ù. CPU °¡ ÀÌÇØÇÒ¼öÀÖ´Â °ÍÀº ¼öÄ¡·Î ±â¼úµÈ ¸í·É ¹Û¿¡ ÀÌÇØ ÇÒ¼ö°¡ ¾øÀ¾´Ï´Ù. ÀÇ»ç ¸í·ÉÀÌ È®ÃæµÈ ¸ÅÅ©·Î¾î¼Àºí·¯: Á÷Á¢±â°è¾î·Î´Â ¹ø¿ªµÇÁö´Â ¾ÊÁö¸¸ ¹ø¿ª ÇÒ¶§ ¾î¼Àºí·¯¿¡ ÀÇÇØ ÂüÁ¶ µÇ´Â °ÍÀÔ´Ï´Ù. ¾î¼Àºí¸® ¾ð¾î¶õ: ±â°è¾î¿Í 1 ´ë 1 ·Î ´ëÀÀµÈ ¸í·ÉÀ» ±â¼úÇÏ´Â ¾ð¾î ¾î¼Àºí·¯¶õ: ¾î¼Àºí¸® ¾ð¾î·Î ¾²¿©Áø ¼Ò½º¸¦ ¹ø¿ª ±â°è¾î ÇÁ·Î±×·¥À» ÀÛ¼ºÇØÁÖ´ÂÇÁ·Î ±×·¥. MASM Àº ¸ðµâº° °³¹ßÀÌ ¿ëÀÌÇϹǷΠÃàÀûµÈ ¼ÒÇÁÆ®¿þ¾î¸¦ À¯È¿ÇÏ°Ô È°¿ë ÇÒ¼öÀÖ´Ù. MASM ¿¡ ÀÇÇÑ ¾î¼Àºí·¯ °³¹ß¹ý : ¾Æ½ºÅ° ¹®ÀÚ¿­·Î½á ÀúÀåÇÏ´Â ÇüÅÂÀÇ ¿¡µðÅͶó¸é ¹«¾ù ÀÌµç »ç¿ë ÇÒ¼öÀÖ´Ù. ¸µÄ¿ÀÇ ¿ªÇÒ: ¸î°¡Áö ÀÇ È­ÀÏÀ» ÇÕÃļ­ ÇϳªÀÇ ÇÁ·Î±×·¥À¸·Î ¸¸µå´Â °ÍÀÌ ¸µÄ¿ÀÇ ¿ªÈ°ÀÌ°í ¸µÄ¿¿¡ ÀÔ·ÂÀÌ µÇ´Â È­ÀÏÀÌ Áß°£ È­ÀÏÀÎ ¿ÀºêÁ§Æ® È­ÀÏ ÀÔ´Ï´Ù. ¶óÀ̺귯¸®ÀÇ »ç¿ë¹ý: ¸ðµâº°·Î °³¹ßµÈ ¿ÀºêÁ§Æ®È­ÀÏ È­ÀÏ À» ÇÕÃļ­ ÇϳªÀÇ ¶óÀ̺귯¸® È­ÀÏ À̶ó´Â °ÍÀ» ÀÛ¼º ÇصӴϴÙ. ¸µÅ©½Ã¿¡ ¶óÀ̺귯¸® ¸¦ ÁöÁ¤ÇÏ´Â °Í¸¸À¸·Îµµ ±×Áß¿¡¼­ ÇÊ¿äÇÑ ¿Àºê Á§Æ® È­Àϸ¸À» ÀÚµ¿À¸·Î ²¨³»¾îÁ® °áÇÕÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. CPU´Â ±â°è¾î¸¦ ¾î¶»°Ô ÀÌÇØÇϳª -------------------------------------------------------------------------------- ÄÄÆÄÀÏ·¯ ¾ð¾î: ±â°è¾î·ÎÀÇ ¹ø¿ªÀÛ¾÷À» ÇѲ¨¹ø¿¡ ÇÕÃļ­ ¼öÇàÇØ ¹ö¸°µÚ¿¡ ½ÇÇà ÀÎÅÍÇÁ¸®ÅÍ ¾ð¾î:Á¶±Ý¾¿ ¹ø¿ªÇϸ鼭 ½ÇÇà 1 À̳ª 0 ÀÇ Á¤º¸ÀÇ ¾çÀ» 1 ºñÆ®(bit) 8ºñÆ®¸¦ ÇÑÁ¶·Î 1¹ÙÀÌÆ®(byte) 16 ºñÆ® CPU ¶õ? : CPU ³»ÀÇ ·¹Áö½ºÅÍ°¡ 16ºñÆ®ÀÇ Å©±â,ÁÖº¯ÀåÄ¡¿Í µ¥ÀÌÅÍÀÇ ±³È¯À» ÇÏ´Â µ¥ÀÌÅÍ ¹ö½º°¡ 16°³ÀÖ´Ù. (16 ºñÆ® = 2 ¹ÙÀÌÆ® = 1¿öµå ) CPU ÀÇ µ¿ÀÛÀº 2 ¹ÙÀÌÆ® ¸¦ ÇϳªÀÇ ´ÜÀ§·Î ¼­ ½ÇÇàÇÏ°í ÀÖ¾î ¿öµå(= 2¹ÙÀÌÆ®) ´ÜÀ§·Î µ¥ÀÌÅ͸¦ Á¶ÀÛ ÇÏ´Â °æ¿ìÀÇ ÂÊÀÌ È¿À²ÀÌ ÁÁ°Ô µÇµµ·Ï ¼´°èµÇ¾î ÀÖÀ¸¹Ç·Î È¿À²ÀÌ ÁÁÀº ÇÁ·Î±×·¥À» ÀÛ¼º ÇÒ¶§´Â ÀÌ°ÍÀ» °í·Á Çغ¼ ÇÊ¿ä°¡ ÀÖ´Ù. ƯÈ÷ ,µ¥ÀÌÅ͸¦ ¾×¼¼½º ÇÒ¶§´Â 0 ¹øÁö¿Í 1¹øÁö 2¹øÁö¿Í 3¹øÁö ÀÌ·¯ÇÑ ½ÄÀ¸·Î ¦¼ö Ȧ ¼ö ¼øÀ¸·Î Á¶ÇÕÇÏ¿© ½ÇÇàÇϸé , Çѹø¿¡ µÎ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ Àб⠾²±â°¡ °¡´ÉÇϹǷΠó¸®ÀÇ È¿À²ÀÌ Çâ»óµË´Ï´Ù. 8068 ÀÇ ·¹Áö½ºÅÍÀÇ ±¸¼º -------------------------------------------------------------------------------- +---------------+ AX:| AH AL | Accumulator Register ---------+ General-purpose BX:| BH BL | Base Register | Register CX:| CH CL | Counter Register | DX:| DH DL | Data Register | | SP | Stack Pointer | | BP | Base Pointer | | SI | Source Index | | DI | Destination Index (¼±Çà À妽º) -+ | | | IP | Instruction Pointer |FLAGS H,FLAGS L| Flag Register | CS | Code Segment Register ----------+ Segment Register | DS | Data Segment Register | | SS | Stack Segment Register | | ES | Extra Segment Register -------+ +---------------+ *.ÁÖÀÇ CS:Äڵ弼±×¸ÕÆ®-CPU°¡ ½ÇÇàÇØ¾ß µÉ ¸í·ÉÀÌ ÀúÀåµÇ¾î ÀÖ´Â ¼¼±×¸ÕÆ®ÀÇ ½ÃÀÛÀ» ³ªÅ¸³¿ SI:¼Ò½ºÀ妽º - ¹øÁöÀÇ °£Á¢ÁöÁ¤¿¡ »ç¿ë , ƯÈ÷ ½ºÆ®¸µ¸í·É¿¡ À־´Â ¸Þ¸ð¸®·Î ºÎÅÍ ·¹Áö½ºÅÍ·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇϱâÀ§ÇÑ Àü¼ÛÃø¹øÁöÀÇ ÁöÁ¤ DI:µ¥½ºÆ¼³×ÀÌ¼Ç À妽º - ¹øÁöÀÇ °£Á¢¹øÁö¿¡ »ç¿ë , ƯÈ÷ ½ºÆ®¸µ¸í·É¿¡ À־´Â ·¹Áö½ºÅÍ·Î ºÎÅÍ ¸Þ¸ð¸®¿¡ µ¥ÀÌÅ͸¦ Àü¼ÛÇϱâÀ§ÇÑ ¼ö½ÅÃø ¹ø Áö¸¦ ÁöÁ¤ÇÒ¶§ »ç¿ë ¼¼±×¸ÕÆ®ÀÇ °³³ä -------------------------------------------------------------------------------- 8086Àº 1M ¹ÙÀÌÆ® ±îÁöÀÇ ¸Þ¸ð¸®¸¦ Ãë±ÞÇÒ¼ö°¡ ÀÖÀ½´Ï´Ù. 1M¹ÙÀÌÆ®´Â 2ÀÇ 20½Â À̹ǷΠ¹øÁöµ¥ÀÌÅͷμ­ 20ºñÆ®°¡ ÇÊ¿äÇÏ°Ô µÇ´Â°ÍÀÔ´Ï´Ù. 8086·¹Áö½ºÅÍ´Â 16ºñÆ® Å©±â ¹Û¿¡ ¾øÀ¸¹Ç·Î 2°³ÀÇ ·¹Áö½ºÅ͸¦ Á¶ÇÕ½ÃÄÑ 20ºñÆ®ÀÇ ¹ø Áö¸¦ ³ªÅ¸³»´Â ¹æ½ÄÀ» ÃëÇÑ´Ù. ¿¹: 2000 H --->¼¼±×¸ÕÆ®·¹Áö½ºÅÍ + 3456H ---> ¿ÀÇÁ¼Â IP ³ª BX, SI (µ¥ÀÌÅ͸¦ ÀÐ°í ¾µ¶§) ------ 23456H ¿ÀÇÁ¼ÂÀ̶õ : ¾î¶² ±âÁØ ¹øÁö·ÎºÎÅÍÀÇ º¯À§(Â÷ÀÌ)¸¦ ³ªÅ¸³½´Ù. ¿ÀÇÁ¼Â ¹øÁö´Â BX,SI,IP µîÀÇ ·¹Áö½ºÅÍ¿¡ ÀÇÇØ ³ªÅ¸³»´Â°Í ¿Ü¿¡ Á÷Á¢ ¼öÄ¡·Î ÁöÁ¤µÉ¼öµµ ÀÖÀ¾´Ï´Ù. 0H +--------+¸Þ¸ð¸® ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ ---->20000H--->+--------+ | | ¿ÀÇÁ¼Â ¹øÁö ----> 3456H --+--------+-->23456H | | ¹°¸®¹øÁö ¿ÀÇÁ¼Â°ª¸¸À» ÁöÁ¤Çϸé ÀÚµ¿ÀûÀ¸·Î ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍÀÇ °ªÀº ´õÇÏ¿© °è»êµÈ´Ù. µû¶ó¼­ ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍÀÇ °ªÀ» Çѹø ¼³Á¤ÇسõÀ¸¸é ,¼¼±×¸ÕÆ® º£À̽º·ÎºÎÅÍ 64KB ÀÌ ³»ÀÇ ¹øÁö´Â ¿ÀÇÁ¼Â ¹øÁö¸¦ ÁöÁ¤ÇÑ´À°Í¸¸À¸·Î Ç¥½ÃÇÒ¼öÀÖ´Ù. ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍÀÇ ¿ëµµ -------------------------------------------------------------------------------- CPU °¡ ¸í·ÉÀ» Àо¶§: CS:IP ÀÇ °ªÀ¸·Î ºÎÅÍ ¹°¸®¹øÁö ¸¦ »ý¼º ,±×¹øÁö·Î ºÎÅÍ ¸í·ÉÀ» ²¨³½´Ù. µ¥ÀÌÅ͸¦ Àü¼ÛÇϴ°æ¿ì: DS: ¿Í OFFSET (¿ÀÇÁ¼Â) ¹øÁö ·Î ºÎÅÍ µ¥ÀÌÅÍ°¡ ÀúÀåµÇ¾îÀÖ´Â ¹°¸®¹øÁö¸¦ °è»ê ½ºÅà µ¿ÀÛÀ» ¼öÇàÇÒ¶§: SS:SP ·ÎºÎÅÍ ½ºÅõ¿ÀÛÀ» ¼öÇàÇÏ´Â ¹øÁö¸¦ °è»ê ¼¼±×¸ÕÆ®´Â ¼­·Î ÀüºÎ ȤÀº ÀϺΰ¡ Áߺ¹µÇ¾îµµ »ó°üÀÌ ¾øÀ¸¹Ç·Î ÇÊ¿ä ÇÏ´Ù¸é ¸î°³ÀÇ ¼¼±×¸ÕÆ®¸¦ °°Àº ¹°¸® ¹øÁö¿¡ ¹èÄ¡ ÇÒ¼öµµ ÀÖÀ½´Ï´Ù. ¸í·ÉÀÇ °³·«ÀûÀÎ Çؼ³ -------------------------------------------------------------------------------- µ¥ÀÌÅÍ Àü¼Û ¸í·É: MOV »çÄ¢¿¬»ê ¸í·É : ADD: µ¡¼À, ADC:µ¡¼À, SUB:»¬¼À, SBB:»¬¼À MUL: °ö¼À, IMUL:ºÎÈ£´Þ¸° °ö¼À, DIV: ³ª´°¼À, IDIV:ºÎÈ£´Þ¸° ³ª´°¼À CBW: ¹ÙÀÌÆ®¿¡¼­ ¿öµå·Î ºÎȣȮÀå CWD: ¿öµå¿¡¼­ ´õºí¿öµå·Î ºÎȣȮÀå INC: Çϳª Áõ°¡ DEC: Çϳª °¨¼Ò ³í¸®¿¬»ê .½¬ÇÁÆ®¸í·É:AND: ³í¸®°ö, OR: ³í¸®ÇÕ, XOR: ¹èŸÀû ³í¸®ÇÕ, NOT:ºÎÁ¤ ,NEG: ºÎÈ£¹ÝÀü SHL: S´Â shift ,H´Â 0À» ³ÖÀ» °ÍÀΰ¡ , L Àº left ROR: RÀº Rotate, ºñ±³ºÐ±â ¸í·É: CMP, JMP´Â ¹«Á¶°Ç ºÐ±â, Above(Å©´Ù),Below(ÀÛ´Ù.) ,Greater( ºÎÈ£¸¦ Æ÷ÇÔÇؼ­ Å©´Ù.) Less(ºÎÈ£¸¦ Æ÷ÇÔÇؼ­ ÀÛ´Ù) ,Equal( °°´Ù), Not(ºÎÁ¤) LOOP: ¹Ýº¹ LOOPE: loop if equal ----+ Á¶°ÇºÎ ¹Ýº¹ LOOPNE: loop if not equal ---+ CALL: ¼­ºê·çƾÀ¸·Î ºÐ±â RET: ¼­ºê·çƾÀ¸·Î ºÎÅÍ ¿ø·¡ÀÇ ·çƾÀ¸·Î µ¹¾Æ¿Ã ¶§¿¡ ½ºÆ®¸µ ¸í·É: LODS: ¸Þ¸ð¸®·Î ºÎÅÍ ·¹Áö½ºÅÍ¿¡ µ¥ÀÌÅ͸¦ ·Îµå STOS: ¸Þ¸ð¸®¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ¸í·É LODS, STOS´Â ¸Þ¸ð¸®ÀÇ ¹øÁöÁöÁ¤ ¹æ¹ýÀÌ SI ȤÀº DI·¹Áö½ºÅ͸¦ »ç¿ëÇÏ¿© °£Á¢ÁöÁ¤À¸·Î Á¤ÇØÁö±â ¶§¹®¿¡ ¹Ì¸® SI,DI¿¡ ¹øÁö¸¦ ¼¼Æ®ÇØ µÎ¾î¾ß ÇÑ´Ù. LODSB,STOSW,MOVSB,MOVSW: ºí·°Àü¼Û ´Üµ¶À¸·Î 1¹ÙÀÌÆ®,1¿öµåÀÇ µ¥ÀÌÅ͸¦ Àü¼Û RET(repeat) ¸í·É°ú Á¶ÇÕ½ÃÄÑ »ç¿ë Çϸé cx ·¹Áö½ºÅÍ°¡ ÁöÁ¤ Çϴ Ƚ¼ö¸¸Å­ ¹Ýº¹ÇÏ¿© µ¥ÀÌÅ͸¦ Àü¼ÛÇÕ´Ï´Ù. À̶§ ¹øÁö´Â ÀÚµ¿À¸·Î °»½ÅµÇ¾î°¡¹Ç·Î ÇÑ ¸í·ÉÀ¸·Î ¿¬¼ÓµÈ ¿©·¯ µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ¼ö°¡ ÀÖÀ¾´Ï´Ù. ½ºÆ®¸µ ¸í·É¿¡´Â ±× ¹Û¿¡µµ µ¥ÀÌÅÍÀÇ Àü¼ÛÀº ÇÏÁö ¾Ê°í ·¹Áö½ºÅÍ¿Í ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» ºñ±³¸¸ ÇÏ´Â SCAS(scan string), ¸Þ¸ð¸® ³¢¸®ÀÇ ³»¿ëÀ» ºñ±³ÇÏ´Â CMPS(compare string) ÀÌµé ¸í·ÉÀº REPE(repeat until equal) REPNE(repeat until not equal)¸í·É°ú Á¶ÇÕÇÔÀ¸·Î½á ÀÏÄ¡ÇÏ´Â µ¥ÀÌÅÍ°¡ ¾ò¾îÁú ¶§±îÁö ,ȤÀº ÀÏÄ¡ÇÏÁö ¾Ê´Â µ¥ÀÌÅÍ°¡ ¾ò¾îÁú ¶§ ±îÁö,¸Þ¸ð¸®»óÀÇ µ¥ÀÌÅ͸¦ Ž»öÇÒ¼ö°¡ ÀÖÀ¾´Ï´Ù. SCASB REPE SCASW REPNE CMPSB REPE CMPSW I/O ¸í·É: LSI¿¡ ¸í·ÉÀ» º¸³½´ÙµçÁö µ¥ÀÌÅ͸¦ ¾ò´Â´ÙµçÁö ÇϱâÀ§ÇÑ ¸í·ÉÀÌ I/O ¸í·É I/O Æ÷Æ®¿¡ µ¥ÀÌÅ͸¦ º¸³»´Â ¸í·ÉÀÌ OUT I/O Æ÷Æ®¿¡ µ¥ÀÌÅ͸¦ ¾ò´Â ¸í·ÉÀÌ IN Æ÷Æ®ÀÇ ¹øÈ£´Â Á÷Á¢ ¼öÄ¡ ȤÀº DX ·¹Áö½ºÅ͸¦ »ç¿ëÇÏ¿©ÁöÁ¤ µ¥ÀÌÅÍ´Â AX ȤÀº AL ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇÏ¿© Àü¼Û ÀÎÅÍ·´Æ® ¸í·É: INT (interrrupt) ´ÙÀ½¿¡ ¹øÈ£¸¦ ÁöÁ¤ ÀÎÅÍ·´Æ® ó¸® ·çƾÀ¸·Î ºÎÅÍ ¿ø·¡ÀÇ ·çƾÀ¸·Î µ¹¾Æ ¿À·Á¸é IRET(interrupt return)À» »ç¿ë CPU Á¦¾î¸í·É: ÁÖ·Î 8086ÀÇ cpu°¡ ¼öÄ¡¿¬»ê ÇÁ·Î¼¼¼­ 8087°úÀÇ »çÀÌ¿¡¼­ µ¥ÀÌŸ¸¦ Àü ¼ÛÇÑ´ÙµçÁö ÁÖº¯ÀåÄ¡·Î ºÎÅÍ READY ½ÅÈ£°¡ ¿Ã¶§±îÁö ½ÇÇàÀ» Á¤ ÁöÇÏ°í ±â´Ù¸°´ÙµçÁö ÇϱâÀ§ÇÑ ¸í·ÉÀÔ´Ï´Ù. WAIT,ESC,LOCK,HLT : ¿ÜºÎ ÁÖ±â MOT: ¾Æ¹«¼öÇ൵ ÇÏÁö ¾ÊÀ½ ±× ¹ÛÀÇ ¸í·É : ·¹Áö½ºÅÍ È¤Àº ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» ½ºÅÿµ¿ªÀ¸·Î ´ëÇÇ º¹±Í½ÃÅ°±â À§ÇÑ PUSH ,POP , Ç÷¡±× ·¹Áö½ºÅ͸¦ ½ºÅÃÀ¸·Î ´ëÇÇ º¹±ÍÇÏ´Â PUSHF,POPF µÎ°³ÀÇ ·¹Áö½ºÅÍ È¤Àº ¸Þ¸ð¸®ÀÇ µ¥ÀÌÅ͸¦ ±³È¯ÇÏ´Â XCHG ÇÑ ¹ÙÀÌÆ®¾¿ ³ª¿­µÈ µ¥ÀÌÅÍÀÇ N ¹øÀç ÀÇ °ÍÀ» ²¨³»´Â XLAT Ç÷¡±× ·¹Áö½ºÅ͸¦ Á÷Á¢ Á¦¾îÇÏ´Â : STC(set carry flag),CLC(clear carry flag), CMC(complement carry flag), STD(set direction flag) ,CLD(clear direction flag), STI(set interrupt-enable flag) CLI(clear interrupt-enable flag) LAHF(load AH from flags ),SAHF(store AH to flags) : Ç÷¡±×·¹Áö½ºÅÍ ÇÏÀ§ 8¹ÙÀÌÆ®¿Í AH ·¹Áö½ºÅÍÀÇ µ¥ÀÌÅ͸¦ Àü¼Û AAA(ASCII adjust for addition ), DAA(decimal adjust for addition), AAS(ASCII adjust for subtract), DAS(decimal adjust for subtract), AAM(ASCII adjust for multiply ), AAD(ASCII adjust for division) : Ç÷¡±× ·¹Áö½ºÅÍ ÇÏÀ§ 8¹ÙÀÌÆ®¿Í AH ·¹Áö½ºÅÍÀÇ µ¥ÀÌÅ͸¦ Àü¼Û (ÀÌ»ó ¸ðµÎ ¿ÀÆÛ·£µå¸¦ °®Áö ¾ÊÀ½) LEA(load effective address):½ÇÈ¿¹øÁö¸¦ ·Îµå LDS(load data segment register), LES(load extra segment register ): ¼¼±×¸ÕÆ® ·¹Áö½ºÅ͸¦ Æ÷ÇÔ ÇÏ´Â ½ÇÈ¿¹øÁö¸¦ ·ÎµåÇÔ ¸í·ÉÀÇ ±¸¼º -------------------------------------------------------------------------------- L1: MOV AX,BX ;comment +-----+ +----------+ +-------------+ +-------------+ +----------+ |¶óº§ | |ÀÛµ¿ ÄÚµå | |Á¦ 1 ¿ÀÆÛ·£µå| |Á¦ 2 ¿ÀÆÛ·£µå| |¼³¸í¹® | +-----+ +----------+ +------+------+ +-------+-----+ +----------+ ^----------------+ Á¶ÀÛÀÇ ¹æÇâ ¸í·É¿¡ ´ëÇؼ­´Â Á¦ 2¿ÀÆÛ·£µå·Î ºÎÅÍ Á¦ 1 ¿ÀÆÛ·£µåÀÇ ¹æÇâÀ¸·Î Á¶ÀÛÀÌ ÀÌ·ç¾î Áý´Ï´Ù. L1: °ú °°Àº ¸í·ÉÀº Á÷Á¢ÀûÀ¸·Î ´Â ±â°è¾î ÄÚµå·Î ¹ø¿ªµÇÁö ¾Ê°í ,ºÐ±â¸í·Éµî¿¡¼­ ÂüÁ¶ µÉ¶§¿¡.¹øÁöÀÇ °è»ê¿¡ »ç¿ëµË´Ï´Ù. ÀÌ¿Í °°Àº ¸í·ÉÀ» ÀÇ»ç ¸í·ÉÀ̶ó°í ¸»ÇÏ°í ,¾î¼Àºí¸® ÇÁ·Î±×·¥À» ÀÛ¼ºÇϴµ¥ ¾ø¾î¼­´Â ¾ÈµÇ´Â °ÍÀÔ´Ï´Ù. ÀÇ»ç¸í·ÉÀ̶õ ¹«¾ùÀΰ¡.? -------------------------------------------------------------------------------- ¾î¼Àºí·¯°¡ ¼Ò½º(source) ÇÁ·Î±×·¡À» ±â°è¾î ÄÚµå·Î º¯È¯ÇÒ¶§¿¡´Â ÇÊ¿äÇÑ Áö½Ã¸¦ ¾î¼À ºí·¯¿¡°Ô ÇàÇÏ´Â°Í ÀÔ´Ï´Ù. Àå¼Ò(¹øÁö)¸¦ ÁöÁ¤ÇÏ´Â ¶óº§ L1: MOV AX,BX ............ ............ JMP L1 ------> L1 ¹øÁö·Î ¹«Á¶°Ç ¶Ù¶ó´Â ¸í·É º¯¼öÀ̸§Àº ¸Þ¸ð¸®»óÀÇ ¹øÁö¸¦ ÁöÁ¤ÇÑ´Ù. MOV AX,DATA1----> DATA1 ¹øÁö¿¡ ÀÖ´Â ¸Þ¸ð¸® ¿öµå1234H ¸¦ AX ¿¡ Àü¼ÛÇÏ´Â ....... °£Á¢¹øÁö ÁöÁ¤¹æ½ÄÀ¸·Î µ¥ÀÌÅÍ Àü¼Û ....... DATA1 DW 1234H | +--------->define word ¶õ º¯¼öÁ¤ÀÇ ÀÇ»ç¸í·É PTR - µ¥ÀÌÅÍÀÇ Å¸ÀÔÀ» ³ªÅ¸³½´Ù. BYTE PTR SEGMENT - ¼¼±×¸ÕÆ® À̸§À» ¼±¾ð MAIN SEGMENT PARA PUBLIC 'CODE' PUBLIC - ¿ÜºÎ ÂüÁ¶ °¡´ÉÀÓÀ» ³ªÅ¸³½´Ù. PUBLIC PROC1 IF - Á¶°Ç¾î¼ÀºíÀ» ÁöÁ¤ IF IBMPC EQ TRUE ......... ENDIF ÀÇ»ç¸í·É¿¡´Â Àý´ë ÇÊ¿äÇÑ°Í°ú ±×·¸Áö ¾ÊÀº °ÍÀÌ ÀÖ´Ù. ½Ã½ºÅÛ È£ÃâÀ̶õ ¹«¾ùÀΰ¡ ? -------------------------------------------------------------------------------- ÀÔÃâ·ÂÀ» À§ÇÑ ½Ã½ºÅÛ È£Ãâ(system call): ½Ã½ºÅÛ¿¡ ÁغñµÇ¾î ÀÖ´Â ±âº» ·çƾÀ» »ç¿ëÇϱâ À§ÇÑ ¹æ¹ý ÀÎÅÍ·´Æ®¿Í ½Ã½ºÅÛ È£ÃâÀº °ÅÀÇ ºñ¼ýÇÏ´Ù. MS-DOS ¿¡¼­´Â ÁÖ·Î ÀÎÅÍ·´Æ®ÀÇ 21H ¹øÀ» »ç¿ë ,±×Áß¿¡¼­ ¼­ºêÄ¿¸àµå( subcommand) ¸¦ »ç¿ëÇÑ´Ù. ½Ã½ºÅÛÈ£ÃâÀ» »ç¿ëÇϸé ÇÁ·Î±×·¥À» È¿À²ÀûÀ¸·Î °³¹ßÀ» ÇÒ¼ö°¡ ÀÖ´Ù. ±×·¯³ª.ÁÖÀÇ »çÇ×µµ ÀÖÀ½´Ï´Ù. 1)´Ù¸¥ OS »óÀ¸·Î À̽ÄÀ» ÇÒ¶§¿¡´Â ±×´ë·Î ±Ý¹æ À̽ÄÇÒ¼ö°¡ ¾ø´Ù 2)ÀÔÃâ·Â¿ÜÀÇ ·çƾÀº 1)µ¶ÀÚÀûÀ¸·Î ÀÛ¼ºÇϵçÁö 2)ROM ³»ÀÇ ·çƾÀ» ÀÌ¿ë ÀüÀÚÀÇ °æ¿ì ÇÁ·Î±×·¥°³¹ß¿¡ ¹æ´ëÇÑ ½Ã°£À» °É¸°´Ù. ÈÄÀÚÀÇ°æ¿ì Ÿ±âÁ¾°úÀÇ È£È¯¼ºÀÌ »ç¶óÁø´Ù´Â ¹®Á¦ Á¡ÀÌ ÀÖÀ¾´Ï´Ù. ±×·¡¼­ À̺κÐÀº ¾î¼Àºí·¯¿¡ ÀÇÇÑ ÇÁ·Î±×·¥ÀÇ °³¹ß¿¡ À־ Å« ¹®Á¦ ÀÔ´Ï´Ù. (½Ç¼ö¿¬»êÀ» °í±Þ¾ð¾î¿¡ ¸Ã°Ü ¸µÅ© ÇÏ´Â ¹æ¹ýµîÀ» »ý°¢ÇÒ¼öÀÖ´Ù.) ÀÌ·¯ÇÑ ¹®Á¦·Î ½ÃÆǵǴ ¼ÒÇÁÆ®¿þ¾î Áß¿¡¼­´Â Á÷Á¢ BASIC ROMÀÇ ·çƾ µîÀ» »ç¿ëÇÏ°í Àִ°ÍÀ̳ª Ư¼öÇÑ ÀÎÅÍ·´Æ® 󸮸¦ »ç¿ë ÇÏ°íÀִ°͵µ À־ MS-DOS »ó¿¡¼­´Â ¶ßÁö ¸¸ IBM-PC ÀÌ¿ÜÀÇ ±âÁ¾¿¡¼­´Â µ¿ÀÛÇÏÁö ¾Ê´Â°Íµµ ÀÖ´Ù. ±â´ÉÀÇ ¹ß´Þ°ú ¹ü¿ë¼ºÀÇ È®´ë¶ó´Â µÎ°¡Áö ¹æÇâ¿¡´Â ¸ð¼øµÇ´Â Ãø¸éÀÌÀÖ´Ù. ¾î¼Àºí·¯ÀÇ »ç¿ë¹ý -------------------------------------------------------------------------------- ¿ÀºêÁ§Æ® È­ÀÏ À̶õ : ¾î¼ÀºíÀÇ °á°ú Ãâ·ÂµÇ´Â ±â°è¾îÀÇ Áß°£È­ÀÏ ¼Ò½º ¸®½ºÆÃ(source listing): ¼Ò½º È­ÀÏ °ú ¾î¼ÀºíÀÇ °á°ú Ãâ·ÂµÈ ±â°è¾î¸¦ ´ëÀÀ½ÃŲ ¸®½ºÆ® È­ÀÏ Å©·Î½º ·¹ÆÛ·±½º(cross reference): ¶óº§À̳ª º¯¼ö À̸§ ÀÌ ¿©±â¼­ Á¤ÀÇ µÇ¾î ¾îµð¿¡ ¼­ ÂüÁ¶ µÇ°í Àִ°¡¸¦ ¸®½ºÆ®ÇÏ´Â È­ÀÏ ÀÔ´Ï´Ù. ¸µÅ©ÀÇ ½ÇÇà -------------------------------------------------------------------------------- ¸µÄ¿ÀÇ ¿ªÈ°Àº ¸î°³ÀÇ ¿ÀºêÁ§Æ® È­ÀÏÀ» ÇÕÃļ­ ÇϳªÀÇ ÇÁ·Î±×·¥À¸·Î ÇÑ´ÙµçÁö, ¶óÀ̺귯¸®·Î ºÎÅÍ ÇÊ¿äÇÑ ·çƾÀ» ²¨³»¾î¼­ ÇÁ·Î±×·¥¿¡ °áÇÕÇÏ´Â °Í¿¡ ÀÖÀ¾´Ï´Ù. ¿ÀºêÁ§Æ® ¸ðµâ (object module) - ¾î¼ÀºíÀÇ °á°ú Ãâ·ÂµÇ´Â ¿ÀºêÁ§Æ® È­ÀÏ ´Ù¸¥ ¸ðµâ°ú °áÇÕ - + ±âÈ£¸¦ »ç¿ë ½ÇÇàÈ­ÀÏ (run file ) - ¸µÄ¿¿¡ ÀÇÇØ ÀÛ¼ºµÈ ½ÇÇà°¡´É È­ÀÏ ¸®½ºÆ® È­ÀÏ - ½ÇÇà°¡´É È­ÀÏ Áß¿¡¼­ ¼¼±×¸ÕÆ®³ª ÇÁ·Î½Ãµà¾îÀÇ ¹øÁö³ª ±æÀ̸¦ ³ªÅ¸³¿ ¸µÅ©ÀÇ °á°ú ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö°¡ ³ª¿À°í ¸µÅ©°¡ ³¡³³´Ï´Ù. Warning: no STACK segment There was 1 error detected ½ºÅü¼±×¸ÕÆ® ´Â ¼³Á¤ÇÏÁö ¾Ê¾Æµµ OS °¡ ÀÚµ¿ÀûÀ¸·Î ¼³Á¤ÇØ ÁÖ´Â °ÍÀ¸·Î µÇ¾îÀÖÀ¸¹Ç·Î ±×´ë·Î ½ÇÇàÇÒ¼ö°¡ ÀÖÀ¾´Ï´Ù. ( ´Ù¸¥ ¿¡·¯ ¸¦ ¹«½Ã ÇÒ¼ö´Â ¾øÀ½´Ï´Ù.) COM È­ÀÏÀº EXE È­ÀÏÀ» º¯È¯ ÇÏ¿© ¸¸µì´Ï´Ù. EXE2BIN À» ÀÌ¿ë È®ÀåÀÚ°¡ .BIN À» ¸¸µé°í , È®ÀåÀÚ¸íÀÎ BIN À» º¯°æÇϸéµË´Ï´Ù EXE ¿Í COM È­ÀÏÁß COM È­ÀÏÀÌ ¸ÕÀú ½ÇÇàµÈ´Ù. ½ºÅà ¼¼±×¸ÕÆ®°¡ ¼±¾ð µÇ¾î ÀÖ´Â EXE È­ÀÏÀº º¯È¯ÇÒ¼ö ¾ø´Ù. COM ¸ðµ¨°ú EXE ¸ðµ¨°ú´Â ¼¼±×¸ÕÆ®ÀÇ Ãʱ⠼³Á¤ µî¿¡ Â÷ÀÌ°¡ ÀÖ´Ù µð¹ö±×ÀÇ »ç¿ë¹ý -------------------------------------------------------------------------------- µð¹ö±×´Â ÇÁ·Î±×·¥À» Á¶±Ý¾¿ ½ÇÇà½ÃÅ°¸é¼­ ·¹Áö½ºÅͳª ¸Þ¸ð¸®ÀÇ ³»¿ëÀ» »ìÆì º¸´Â °Í À¸·Î¼­, ÇÁ·Î±×·¥ÀÌ ±â´ëÇÑ ´ë·Î µ¿ÀÛÇÏ°í Àִ°¡¸¦ »ìÇDZâ À§ÇÑ TOOL ÀÔ´Ï´Ù. º»ÁúÀûÀÎ ¾Ë°í¸®ÁòÀÇ À߸øÀ» ã¾Æ³»´Â °ÍÀº ½±Áö ¾ÊÁö¸¸ ¾î´À ºÎºÐÀÌ ÆøÁÖÇØ ¹ö¸®´Â °¡ ¶ó´Â °ÍÀº ¾Ë¼ö ÀÖÀ¾´Ï´Ù. EXE ¸ðµ¨°ú COM ¸ðµ¨ -------------------------------------------------------------------------------- EXE ¸ðµ¨Àº ºñ±³Àû Å« ÇÁ·Î±×·¥¿¡ COM Àº ¸ðµ¨ÀÌ ºñ±³Àû ÀÛÀº ÇÁ·Î±×·¥¿¡ »ç¿ë µÈ´Ù MS-DOS ¿¡¼­´Â ½ÇÇà°¡´É ÇÁ·Î±×·¥ÀÌ ¸Þ¸ð¸® »ó¿¡ ·Îµå µÇ¾úÀ» ¶§¿¡ ÇÁ·Î±×·¥ÀÇ Á÷Àü¿¡ PSP(Program Segment Prefix)¶ó°í ºÎ¸£´Â ºÎºÐÀÌ ¼³Á¤µÇ°í,±× ´ÙÀ½¿¡ ÇÁ·Î±×·¥ º»Ã¼°¡ ³õ¿©Áý´Ï´Ù. PSP ´Â ÀüºÎ 100H ¹ÙÀÌÆ®°¡ À־ ÇÁ·Î±×·¥ ½ÇÇà¿¡ ÇÊ¿äÇÑ ¿©·¯°¡Áö Á¤º¸°¡ µé¾îÀÖ½À´Ï´Ù. EXE ¸ðµ¨ DS ¿Í ES °¡ PSP ÀÇ ½ÃÀÛÀ» CS °¡ ÇÁ·Î±×·¥ÀÇ ½ÃÀÛÀ» ³ªÅ¸³»µµ·Ï ¼¼Æ®µË´Ï´Ù. SS ´Â Ưº°È÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é CS ¿Í °°Àº °ªÀÌ µË´Ï´Ù. ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀº CS ³»ÀÇ IP ·Î ³ªÅ¸³»´Â ¹øÁö ºÎÅÍ ½ÃÀ۵˴ϴÙ. ½ÃÀÛ¹øÁö´Â Ưº°È÷ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é 0 ÀÓÀÇÀÇ ¹øÁö ºÎÅÍ ½ÃÀÛÇÒ·Á¸é (¼Ò½º ÇÁ·Î±×·¥ÀÇ END ¹®À¸·Î ÁöÁ¤ÇÑ´Ù.) (ÁÖÀÇ) DS¿Í ES °¡ PSP ÀÇ ºÎºÐÀ» ÁöÁ¤ÇÏ°í ÀÖÀ¸¹Ç·Î ÇÁ·Î±×·¥ Áß¿¡¼­ DS ¹× ES ¸¦ »ç¿ë ÇÒ¶§´Â ¹Ýµå½Ã ÀڱⰡ ¼³Á¤À» ´Ù½Ã ÇÏÁö ¾ÊÀ¸¸é ¾ÈµÈ´Ù. *.EXE ¸ðµ¨ÀÇ ¼¼±×¸ÕÆ®ÀÇ ÃʱâÄ¡ | | ÇÏÀ§¹øÁö+-------------+---->DS,ES | PSP100¹ÙÀÌÆ®| +-------------+----->CS,(SS) | ÇÁ·Î±×·¥ |----->CS:IP(½ÃÀÛ¹øÁö) »óÀ§¹øÁö+-------------+ | | COM ¸ðµ¨ COM È­ÀÏ À» ·Îµå ÇÏ¿´À»¶§ ¿¡´Â CS,DS,ES,SS ÀÇ 4°³°¡ ¸ðµÎ ÀÏÄ¡ÇÏ¿© PSP ÀÇ ½ÃÀÛÀ» Áö½Ã Çϵµ·Ï ¼¼Æ®µË´Ï´Ù. ÇÁ·Î±×·¥ÀÇ º»Ã¼´Â 100H ¹ÙÀÌÆ®ÀÇ PSP Á÷ÈÄ¿¡ ³õ¿©Áö°í ¼±µÎ·Î ºÎÅÍ ½ÇÇà, IP ÀÇ ÃʱâÄ¡´Â 100H ·Î ¼¼Æ® µË´Ï´Ù. ¼Ò½ºÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ¶§¿¡µµ ORG ¸í·ÉÀ» »ç¿ëÇÏ¿© ½ÃÀÛ¹øÁö¸¦ 100H ¹øÁöºÎÅͼ³Á¤ µ¿½Ã¿¡ ÇÁ·Î±×·¥ÀÇ ½ÃÀÛ¿¡ ¶óº§À» ºÙ¿©¼­ END¹® ¿¡ ÀÇÇؼ­ ½ÃÀÛ¹øÁö¸¦ ÁöÁ¤ÇÏÁö ¾Ê À¸¸é ¾ÊµË´Ï´Ù. ¶ÇÇÑ COM È­ÀÏ ¿¡¼­´Â ¼¼±×¸ÕÆ®ÀÇ °ªÀ» º¯°æÇÏ¸é ¾ÈµË´Ï´Ù. *.COM ¸ðµ¨ÀÇ ¼¼±×¸ÕÆ®ÀÇ ÃʱâÄ¡ ÇÏÀ§¹øÁö| | +------------+--->CS,DS,ES,SS |PSP100¹ÙÀÌÆ®| +------------+--->CS:IP(=100H) | ÇÁ·Î±×·¥ | ½ÃÀÛ¹øÁö »óÀ§¹øÁö+------------+ | | µð¹ö±×ÀÇ ½ÇÁ¦ -------------------------------------------------------------------------------- A>DEBUG SAMPLE.EXE _ ------------>µð¹ö°ÅÀÇ ÇÁ·ÒÇÁÆ® ·¹Áö½ºÅÍ ³»¿ëÀ» Ç¥½ÃÇÏ´Â R Ä¿¸àÆ® ¿ª¾î¼Àºí U Ä¿¸àÆ® ½ÇÇàÀ» ÇÏ´Â G Ä¿¸àÆ® ½ÇÇà Ä¿¸àµå(GO)ÀÇ ½ÃÀÛ¹øÁö´Â = À» »ç¿ë _ G=0,F µð¹ö°Å¸¦ ³¡³»´Â Q ´ÙÀ½ ¸Þ¼¼Áö°¡ ³ª¿ÔÀ»¶§ Çѹø´õ ½ÇÇàÀ» ÇÏ·Á°í Çϸé ÆøÁÖÇØ ¹ö¸°´Ù. Program terminated normally ÀÇ ¸Þ¼¼Áö°¡ ³ª¿À¸é ÀÏ´Ü µð¹ö°Å¸¦ ¸¶Ä£´ÙÀ½ ¿¡ ´Ù½Ã óÀ½ºÎÅÍ ½ÃÀÛÇØ¾ß ÇÑ´Ù. ÇÁ·Î±×·¥ÀÇ ¼öÁ¤¹ý -------------------------------------------------------------------------------- µð¹ö°Å¸¦ ±âµ¿ÈÄ È­ÀÏ À» ·Îµå ÇÏ´Â ¹ý: N Ä¿¸àµå È­ÀÏÀ» ·ÎµåÇÏ´Â : L Ä¿¸àµå _NSAMPLE.EXE _L 1½ºÅܾ¿ ½ÇÇàÇÏ´Â : T Ä¿¸àµå _T=100,20 20Àº 20 ½ºÅÜ T Ä¿¸àµå´Â ¼­ºê·çƾÀ̳ª ÀÎÅÍ·´Æ® ó¸® ·çƾÀÇ ³»ºÎ±îÁö ½ÇÇà ±×·¡¼­ ÀÎÅÍ·´Æ® ó¸® ·çƾÀ̳ª ¼­ºê·çƾÀ» ¸¸³µÀ¸¸é ±×°ÍÀ» °Ç³Ê ¶ÛÇÊ¿ä°¡ ÀÖÀ½´Ï´Ù. ¼­ºê·çƾÀ» °Ç³Ê ¶Ù·Á¸é : G Ä¿¸àµå _G12F 1ÇàÀ» ¾î¼Àºí : A Ä¿¸àµå _A8 2242:0008 CMP DL,5F 2242:000B ¸Þ¸ð¸® ³»¿ëÀ» Á÷Á¢ ¹Ù²ã ½á ³ÖÀ¸·Á¸é ´ëÄ¡(substitute)¸í·ÉÀÎ: S Ä¿¸àµå ´Ü ÇÑÇ྿ ¹Ù²ã¾´ ¾ÕµÚÀÇ ¹ÙÀÌÆ®¼ö°¡ º¯È­µÇ¸é Æı«µË´Ï´Ù. ¼öÁ¤ÇÑ È­ÀÏÀ» ¿ø·¡ÀÇ µð½ºÄÏ¿¡ ½á³ÖÀ¸·Á¸é ±â·Ï(WRITE)¸í·ÉÀÎ: W Ä¿¸àµå ´Ü ½ÇÇà°¡´É È­ÀÏÀÎ EXE ³ª COM È­ÀÏÀº ¹Ù²Ù¾î ½á³ÖÀ»¼ö°¡ ¾øÀ¾´Ï´Ù. ÀÌ°ÍÀº µð¹ö°Å°¡ È­ÀÏÀ» ¸Þ¸ð¸®»ó¿¡ ·Îµå ÇÒ¶§¿¡ Ưº°ÇÑ Ã³¸®¸¦ ÇÏ¿© ½ÇÇàÀÌ °¡´ÉÇÑ »óÅ·Π¸¸µé¾î ³õ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. º¸ÅëÀº µð½ºÅ©»óÀÇ À̹ÌÁö (image) °¡ ±×´ë·Î ¸Þ¸ð¸®¿¡ »ó¿¡ ·Îµå µÇ±â ¶§¹®¿¡ ¼öÁ¤ÇÏ ¿© ´Ù½Ã ½á³ÖÀ»¼ö°¡ ÀÖÁö¸¸ , À̵éÈ­ÀÏÀº µð½ºÅ©»óÀÇ À̹ÌÁö¿Í ¸Þ¸ð¸® »óÀÇ À̹ÌÁö°¡ Â÷ÀÌ°¡ ÀÖÀ¸¹Ç·Î ºÒ°¡´ÉÇÑ °ÍÀÔ´Ï´Ù.