http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1134 [º¹»ç]
¾ÆÁ÷µµ ¾î¼Àºí¸®¾ð¾î°¡ ÇÊ¿äÇÑ°¡.
--------------------------------------------------------------------------------
¾î¼Àºí¸® ¾ð¾îÀÇ Áö½ÄÀº °í¼Ó¿¬»ê ·çƾÀ» ÀÛ¼ºÇϱâÀ§Çؼ¸¸ ÇÊ¿äÇÑ °ÍÀÌ ¾Æ´Ï¶ó.¸¶ÀÌ
Å©·Î ÄÄÇ»ÅÍÀÇ ½Ã½ºÅÛÀ» À߾˱â À§ÇÏ¿© ÇÊ¿äÇÑ°ÍÀÌ´Ù.
¸Þ¸ð¸®»óÀÇ µ¥ÀÌÅͳª 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) °¡ ±×´ë·Î ¸Þ¸ð¸®¿¡ »ó¿¡ ·Îµå µÇ±â ¶§¹®¿¡ ¼öÁ¤ÇÏ
¿© ´Ù½Ã ½á³ÖÀ»¼ö°¡ ÀÖÁö¸¸ , À̵éÈÀÏÀº µð½ºÅ©»óÀÇ À̹ÌÁö¿Í ¸Þ¸ð¸® »óÀÇ À̹ÌÁö°¡
Â÷ÀÌ°¡ ÀÖÀ¸¹Ç·Î ºÒ°¡´ÉÇÑ °ÍÀÔ´Ï´Ù.
|
Hit : 13748 Date : 2008/12/13 11:05
|