5.10 °ö¼À¸í·É°ú ±¸Á¶ -------------------------------------------------------------------------------- °ö¼À¸í·É MUL(multiply) ¿¡¼­´Â 8ºñÆ® * 8ºñÆ®,ȤÀº 16ºñÆ® * 16ºñÆ® ¸¦ °è»êÇÒ¼ö°¡ ÀÖÀ¾´Ï´Ù. »ç¿ëÇÒ¶§ÀÇ Á¦ÇÑ : ¿ì¼± °ö¼ÀÇÒ ÇÑÂÊÀº ¹Ýµå½Ã AL ·¹Áö½ºÅÍ(ȤÀº AX ·¹Áö½ºÅÍ )¿¡ ³Ö¾îµÎÁö ¾ÊÀ¸¸é ¾ÈµË ´Ï´Ù. °á°ú´Â AX ·¹Áö½ºÅÍ(ȤÀº DX ·¹Áö½ºÅ͸¦ »óÀ§16ºñÆ®,AX ·¹Áö½ºÅ͸¦ ÇÏÀ§ 16ºñÆ® ·Î °£ÁÖÇÑ 32ºñÆ® ·¹Áö½ºÅÍ )¿¡ ÀúÀåµË´Ï´Ù. µû¶ó¼­ °ö¼À¸í·ÉÀÇ ¿ÀÆÛ·£µå´Â Çϳª ÀÌ´Ù. 8ºñÆ® °ö¼À °ö¼À°á°ú ÀúÀå +---+ +------------------------------+ +---+ |AL | * | 8ºñÆ®ÀÇ ·¹Áö½ºÅÍ È¤Àº ¸Þ¸ð¸® |--->|AX | +---+ +------------------------------+ +---+ 16ºñÆ® °ö¼À °ö¼À°á°ú ÀúÀå +---+ +------------------------------+ +---+---+ |AX | * |16ºñÆ®ÀÇ ·¹Áö½ºÅÍ È¤Àº ¸Þ¸ð¸® |--->|DX |AX | +---+ +------------------------------+ +---+---+ ¿¹) MUL BL ¿©±â¼­ ÁöÁ¤µÈ ·¹Áö½ºÅÍ°¡ 8ºñÆ®Àΰ¡ ,16ºñÆ®Àΰ¡¿¡ µû¶ó¼­ ÀÚµ¿ÀûÀ¸·Î AX ·¹Áö½ºÅÍ°¡ °áÁ¤ µË´Ï´Ù. ºÎÈ£¾ø´Â °ö¼À MUL(multiply) ºÎÈ£ÀÖ´Â °ö¼À IMUL(integer multiply) »ç¿ëÇÒ¶§ÀÇ ÁÖÀÇÇÒÁ¡: ¿ÀÆÛ·£µå°¡ ¸Þ¸ð¸®À϶§ ¿¹) MUL DATA1 ............. DATA1 DB 20H ¿Í°°Àº °æ¿ì¿¡´Â DATA1ÀÇ ÇüÀÌ ¹ÙÀÌÆ® º¯¼ö¶ó°í ¾Ë¼öÀÖÀ¸¹Ç·Î ±¦ÂúÁö¸¸ MOV BX,OFFSET DATA2 MUL [BX] ............. DATA2 DW 1234H ¿Í °°Àº °æ¿ì,[BX]¿¡ ÀÇÇØ Ç¥½ÃµÈ´Â ¸Þ¸ð¸®°¡ ¹ÙÀÌÆ®´ÜÀ§ÀÎÁö,¿öµå´ÜÀ§ÀÎÁö°¡ ºÒ¸íÈ® ÇϹǷΠ¿¡·¯°¡ µË´Ï´Ù. ÀÌ¿Í °°Àº °æ¿ì¿¡´Â [BX]¿¡ ÀÇÇØ ÁöÁ¤µÇ´Â ¸Þ¸ð¸®°¡ ¹ÙÀÌÆ® ´Ü À§ÀÎÁö¸¦ ¸í½ÃÇϱâ À§Çؼ­ MUL WORD PTR[BX] ¿Í °°ÀÌ »ç¿ëÇÏÁö¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¶ÇÇϳª ÁÖÀÇ ÇÒÁ¡: °ö¼À¸í·É¿¡¼­´Â Á÷Á¢ ¼ýÀÚÇÏ°í´Â °ö¼ÀÀ» ÇÒ¼ö¾ø´Ù ¿¹) MUL 3 ÀÌ¿Í °°ÀÌ ´Â ÇÒ¼ö¾øÀ¸¹Ç·Î MOV BL,3 MUL BL ¿Í °°ÀÌ Çϵµ·Ï µÇ¾î ÀÖÀ¾´Ï´Ù. ¶ÇÇÑ »ó¼öÀ̸§Àº ¼öÄ¡·Î º¯È¯µÇ±â ¶§¹®¿¡ »ó¼öÀ̸§µµ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ABC EQU 12H ......... MUL ABC ¿Í °°ÀÌ´Â ¾µ¼ö°¡ ¾øÀ¾´Ï´Ù. ¿¹)MUL1.ASM ºÎÈ£¾ø´Â µÎ°³ÀÇ ¸Þ¸ð¸®³¢¸®,ºÎÈ£ÀÖ´Â µÎ ¸Þ¸ð¸® ³¢¸® °ö¼À º¸±â CODE SEGMENT ASSUME CS:CODE,DS:CODE ; MOV AX,CS ; CS¿Í DS¸¦ °°°Ô ¼³Á¤ MOV DS,AX ; MOV AL,DATA_1A MUL DATA_1B MOV ANS1,AX MOV AX,DATA_2A MUL DATA_2B MOV ANS2_A,DX ;°á°úÀÇ »óÀ§,ÇÏÀ§¸¦ Á÷Á¢º¯¼ö¿¡ ³ÖÀ» ¶§¿¡´Â 2°³ÀÇ º¯¼ö MOV ANS2_B,AX ;·Î ³ª´©¾î¾ß¸¸ ÇÑ´Ù. ; MOV AL,DATA_3A MOV BL,DATA_3B IMUL BL MOV ANS3,AX MOV AX,DATA_4A MOV BX,OFFSET DATA_4B IMUL WORD PTR [BX] MOV DI,OFFSET ANS4 -+ÀÌ¿Í °°ÀÌ ÁöÁ¤ÇÏ¸é º¯¼öÀ̸§Àº ÇϳªÀÌ¸é µÈ´Ù. MOV [DI],DX | MOV [DI+2],AX -+ ; MOV AH,4CH INT 21H ; DATA_1A DB 0F0H DATA_1B DB 11H DATA_2A DW 1234H DATA_2B DW 2001H DATA_3A DB -10H DATA_3B EQU 11H ;EQU ¿¡ ÀÇÇÑ Á¤ÀÇ´Â ¾îµð¿¡ À־ »ó°ü¾øÁö¸¸ ÁÖÀÇ°¡ ÇÊ¿ä DATA_4A DW -1000H DATA_4B DW 1234H ; ANS1 DW ? ANS2_A DW ? ;16ºñÆ® ¼ýÀÚ °ö¼ÀÀº DW·Î Á¤ÀÇ ¿öµå¿¡ Çѹø¿¡ ÀúÀåÇÒ¼ö ANS2_B DW ? ;¾øÀ¸¹Ç·Î ANS2-A ¿Í ANS2-B ·Î ³ª´©¾î ÀúÀå ANS3 DW ? ANS4 DD ? ;´õºÒ¿öµå(4¹ÙÀÌÆ®)¸¦ ¼±¾ð ; CODE ENDS END DATA_1B ´Â DB¿¡¼­ Á¤ÀÇµÈ º¯¼öÀ̸§ÀÌ°í ,¹ÙÀÌÆ®ÇüÀÇ ¼Ó¼ºÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î BYTE PTR ÀÇ ÁöÁ¤Àº »ý·«ÇÒ¼öÀÖÀ¾´Ï´Ù.(ºÙ¿©µµ »ó°ü¾øÀ¾´Ï´Ù.) DATA_2B °¡ ¿öµåÇüÀÇ ¼Ó¼ºÀ» °®°í Àֱ⠶§¹®¿¡ Á÷Á¢ °ö¼ÀÀ» ÇÒ¼ö°¡ ÀÖÀ¾´Ï´Ù. °á°ú°¡ DX:AX ·¹Áö½ºÅͽֿ¡ ÀÇÇÑ 32¹ÙÀÌÆ® ·¹Áö½ºÅÍ¿¡ ÀúÀåµÇ¾î Áý´Ï´Ù. ÀÌ°á°ú¸¦ ANS2 ·Î Àü¼ÛÇÏ°í ½ÍÀºµ¥ Çѹø¿¡ ÇÒ¼ö¾øÀ¸¹Ç·Î DX·¹Áö½ºÅÍ¿Í AX·¹Áö½ºÅÍ·Î ³ª´©¾î¼­ Àü¼ÛÇÕ´Ï´Ù. ·¹Áö½ºÅÍÀÇ º¯¼öÀ̸§ÀÇ ÇüÀÌ ÀÏÄ¡ÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ¹Ç·Î ,ANS2 ¸¦ 2°³ÀÇ ¿öµåÇüÀÇ º¯¼ö ANS2_A ¿Í ANS2_B ·Î ³ª´©°í ÀÖÀ¾´Ï´Ù. º¯¼öÀ̸§Àº ¼Ó¼ºÀ¸·Î¼­ ¹øÁö ÀÌ¿Ü¿¡µµ ¹ÙÀÌÆ®ÀÎÁö ¿öµåÀÎÁö¸¦ ±¸ºÐÇϴ ŸÀÔÀ» °¡Áö°í ÀÖ´Â °Í¿¡ ÁÖÀÇ ÇØ ÁÖ½Ê½Ã¿ä ¸¸ÀÏ , MOV ANS2,DX MVO ANS2+2,AX ....... ANS2 DD ? ANS2´Â ´õºí ¿öµåÇü(double word)ÀÇ ¼Ó¼ºÀ» °®°í ÀÖÀ¸¹Ç·Î ,´õºí ¿öµåÇüÀÇ º¯¼ö¿¡ ¿ö µåÇüÀÇ ·¹Áö½ºÅÍ°ªÀ» Àü¼ÛÇÏ·Á°í ÇÑ°ÍÀ¸·Î µÇ¾î¼­ ERROR °¡ µË´Ï´Ù. ÀÌ¿Í °°Àº »ç¿ë¹ýÀ»ÇÏ°í ½Í´Ù¸é °­Á¦ÀûÀ¸·Î ŸÀÓÀ» ÀÏÄ¡½ÃÅ°±â À§Çؼ­ MOV WORD PTR ANS2,DX MOV WORD PTR ANS2+2,AX ANS DD ? ¶ó°í ÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. Àü¹æ ÂüÁ¶(forward reference) ¸ÅÅ©·Î ¾î¼Àºí·¯´Â ¼Ò½º ÇÁ·Î±×·¥À» ±â°è¾î·Î ¹ø¿ªÇÒ ¶§ Àüü¸¦ ¼±µÎ·ÎºÎÅÍ 2¹ø ¹Ýº¹ Çؼ­ Àаí Áö³ª°¡¸é¼­ ÀÛ¾÷À» ÇØ ³ª°©´Ï´Ù.(±× ¶§¹®¿¡ 2Æнº ¾î¼Àºí·¯(two pass assembler) ¶ó°í ºÒ¸®¿öÁø´Ù.) ¾î¼Àºí·¯°¡ ù¹ø° ¼±µÎ·Î ºÎÅÍ ÀÐ¾î ³»·Á °¥¶§¿¡ ,DATA_3B´Â ÇÁ·Î±×·¥ ³¡¿¡ Àֱ⠶§ ¹®¿¡ ¾ÆÁ÷ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î ,ÀÌ ½ÃÁ¡¿¡¼­´Â ¾ÆÁ÷ ±â°è¾î¸¦ °áÁ¤ÇÒ¼ö°¡ ¾øÀ¾´Ï ´Ù.±×·¡¼­ ¾î¼Àºí·¯´Â À̺κÐÀÇ ±â°è¾î¸¦ °áÁ¤ÇÏÁö ¾ÊÀº ä·Î »ý°¢ÇÒ¼ö ÀÖ´Â ÃÖ´ë ¹Ù ÀÌÆ®ÀÎ 4¹ÙÀÌÆ®¸¦ È®º¸ÇØµÎ°í ´ÙÀ½À¸·Î ÁøÇàÇØ ³ª°©´Ï´Ù.±×¸®°í ¸¶Áö¸·ÂÊ¿¡¼­ DATA_3B °¡ »ó¼ö ÀÌ°í ±× °ªÀÌ 11H ¶ó´Â °ÍÀ» ¾Ë¼öÀÖÀ¾´Ï´Ù.±×·¡¼­ 2¹ø° ¹ø¿ª ÀÛ¾÷ÇÒ¶§¿¡ ¹Ì Á¤À̾ú´ø ±â°è¾î ¸¦ °áÁ¤ÇÒ¼ö°¡ ÀÖÀ¾´Ï´Ù.±×·¯³ª ¿Ï¼ºµÈ ±â°Ô¾î´Â 2¹ÙÀÌÆ®·Î ÇÒ¼ö°¡ À־,ù¹ø° È®º¸ÇØ µÎ¾ú´ø 4¹ÙÀÌÆ® Áß 2¹ÙÀÌÆ®°¡ ³²¾Æ ¹ö¸³´Ï´Ù. ±×·¡¼­ ¾î¼Àºí·¯ ´Â ºÒÇÊ¿äÇÑ 2¹ÙÀÌÆ® ¿¡ NOP(=no operation:¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â °Í ¿¡ »ó´çÇÏ´Â 90H ¸¦ »ðÀÔÇÕ´Ï´Ù. ÀÌ¿Í °°ÀÌ Ã¹¹ø°ÀоúÀ» ¶§¿¡ ¾ÆÁ÷ Á¤ÀǵǾî ÀÖÁö ¾ÊÀº ¶óº§(»ó¼ö À̸§À̳ª º¯¼öÀ̸§ ±âŸ µîµî )ÀÌ ³ªÅ¸³ª´Â°ÍÀ» Àü¹æÂüÁ¶(forward refenence) ¶ó°í ºÎ¸¨´Ï´Ù. Àü¹æÂüÁ¶ °¡ ÀÖÀ¸¸é ÇÁ·Î±×·¥ÀÇ È¿À²ÀÌ ³ª»Ú°Ô µÇ´Â°Í»Ó¸¸ ¾Æ´Ï¶ó ÃÖ¾ÇÀÇ °æ¿ì¿¡´Â ¾î ¼Àºí ¿¡·¯¸¦ ÀÏÀ¸ ŵ´Ï´Ù.±×·¡¼­ EQU ¹®¿¡ ÀÇÇÑ Á¤ÀÇ´Â °¡´ÉÇÑÇÑ ÇÁ·Î±×·¥ÀÇ ¼±µÎ¿¡ ³õµµ·Ï ÇÕ´Ï´Ù. ¹°·Ð , DB ,DW ¿¡ ÀÇÇÑ µ¥ÀÌÅÍÀÇ Á¤Àǵµ Ç×»ó Àü¹ÝÂüÁ¶ÀÇ ¹®Á¦¸¦ °¡Áö°í ÀÖÀ¸¸ð·Î ¿ø ·¡´Â ÇÁ·Î±×·¥ ¼±µÎ¿¡ ³õ´Â ÂÊÀÌ ÁÁ´Ù ¶ó°í ¸»ÇÒ¼ö ÀÖÁö¸¶ EQU ¹®°ú´Â ´Þ¶ó¼­ ´Ü¼øÈ÷ ¼±µÎ¿¡ °¡Á®´Ù ³õÀ¸¸é µÈ´Ù¶ó°íµµ ÇÒ¼ö¾øÀ¸¹Ç·Î ,ÀÌ°Í¿¡ ´ëÇؼ­´Â ¼ø¼­¿¡ µû¶ó ´Ù½Ã ¼³¸íÇÏ°ÚÀ¾´Ï´Ù. MOV DI,OFFSET ANS4 MOV [DI],DX MOV [DI+2],AX ¶ó°í ÇÔÀ¸·Î½á ´õºí ¿öµå´Â º¯¼ö·Î 2°³ÀÇ ¿öµåÇü µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í ÀÖÀ¾´Ï´Ù. °°Àº ¼öÄ¡ÀÇ °ö¼ÀÀÌ¶óµµ ºÎÈ£°¡ ´Þ¸° °ÍÀ¸·Î ºÎ´À³Ä ¾Èº¸´À³Ä¿¡ µû¶ó °á°ú°¡ ´Ù¸£´Ù. MUL +----->0FF0 ... ºÎÈ£¾ø´Â °ö¼ÀÀÎ °æ¿ì F0 * 11 ---------+ IMUL +----->FEF0 ... ºÎÈ£ÀÖ´Â °ö¼ÀÀÎ °æ¿ì ½ºÆ®·°Ã³(structure)¿¡ ÀÇÇÑ º¯¼öÀÇ Á¤ÀÇ :±¸Á¶Ã¼¶ó´Â ÀÇ¹Ì µ¥ÀÌÅ͸¦ ÇÁ·Î±×·¥Áß¿¡ ³ª¿­ÇÏ´Â °æ¿ì À̸§\Ç׸ñ | AGE | HEIGHT | WEIGHT | A | 45 | 170 | 72 | B | 38 | 164 | 58 | C | 25 | 175 | 68 | A_AGE DB 45 A_HEIGHT DB 170 A_WEIGHT DB 72 B_AGE DB 38 B_HWIGHT DB 164 B_WEIGHT DB 58 C_AGE DB 25 C_HWIGHT DB 175 C_WEIGHT DB 68 ÀÌ¿Í°°Àº ¹æ¹ý¿¡¼­ÀÇ Á¤ÀÇ´Â ,µ¥ÀÌÅÍÀÇ ¼ö°¡ Áõ°¡µÊ¿¡ µû¶ó ´ë´ÜÈ÷ ±ÍÀÝ°Ô µÇ°í ¶ÇÇÑ ¾Ë±â ¾î·Æ°Ô µË´Ï´Ù. MASM¿¡¼­´Â ¸î°¡Áö Ç׸ñÀ¸·Î ³ª´©¾îÁö´Â °Í°ú °°Àº µ¥ÀÌÅÍ ±¸Á¶¸¦ Á¤ÀÇ ÇÒ¼öÀÖµµ·Ï ½ºÆ®·°ÃÄÇü º¯¼ö ¶ó°í ÇÏ´Â ±¸Á¶¸¦ Á¤ÀÇÇÒ¼öÀÖµµ·Ï µÇ¾îÀÖÀ½´Ï´Ù. ½ºÆ®·°Ã³Çü º¯¼ö¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¹Ì¸® STRUC ÀÇ»ç¸í·É À» »ç¿ëÇÏ¿© µ¥ÀÌÅÍÀÇ ±¸ Á¶¸¦ Á¤ÀÇÇØ µÓ´Ï´Ù. AHW STRUC --+ AGE DB ? |½ºÆ®·°Ã³Çü º¯¼ö¼±¾ðÀ» À§ÇÑ ÀÇ»ç¸í·É ¿¹ HEIGHT DB ? | WEIGHT DB ? | AHW ENDS --+ ¿©±â¿¡¼­ AHW°¡ ½ºÆ®·°Ã³ À̸§ÀÌ µÇ°í AGE,HEIGHT,WEIGHT°¡ ÇʵåÀ̸§ ÀÔ´Ï´Ù.¿©±â¿¡¼­ Á¤ÀÇµÈ ½ºÆ®·°Ã³ À̸§Àº µ¥ÀÌÅÍÀÇ ±¸Á¶¿¡ ´ëÇØ ºÙ¿©Áø À̸§À¸·Î¼­ º¯¼öÀ̸§ ±×ÀÚü´Â ¾Æ´Õ´Ï´Ù. A AHW <45,170,72> ¿Í °°Àº ½ÄÀ¸·Î ÇÕ´Ï´Ù.±×¸®ÇÏ¿© A´Â ½ºÆ®·°Ã³ º¯¼öÀ̸§< > ¼ÓÀÌ ±× º¯¼öÀÇ °¢ Ç׸ñ ¿¡ ´ëÇØ ÁÖ¾îÁø µ¥ÀÌÅÍÀÇ ÃʱâÄ¡ ÀÔ´Ï´Ù.¿©·¯ »ç¶÷ÀÇ µ¥ÀÌÅ͸¦ Á¤ÀÇÇÏ·Á¸é ´ÙÀ½°ú °° ÀÌ ÇÕ´Ï´Ù. A AHW <45,170,72> B AHW <38,164,58> C AHW <25,175,68> ÀÌ°ÍÀ¸·Î½á A,B,C ... ÀÌ 3 °³ÀÇ Çʵå (AGE,HEIGHT,WEIGHT) ¸¦ °¡Áö´Â ½ºÆ®·°Ã³Çü º¯ ¼ö·Î¼­ Á¤ÀÇµÇ¾î °¢ Çʵµ¿¡ ´ëÀÀ ÇÏ´Â µ¥ÀÌÅÍ°¡ ¼³Á¤µË´Ï´Ù. ½ºÆ®·°Ã³ À̸§(ÀÌ°æ¿ì´Â AHW)Àº ´Ü¼øÈ÷ µ¥ÀÌÅÍÀÇ ±¸Á¶¸¦ ³ªÅ¸³»´Â °ÍÀ̶ó´Â Á¡¿¡ ÁÖÀÇ ÇØ Áֽʽÿä. ½ºÆ®·°Ã³Çü º¯¼ö ³»ÀÇ °¢°¢ÀÇ ¿ä¼Ò¸¦ ²¨³»·Á¸é ,½ºÆ®·°Ã³Çü º¯¼öÀ̸§ ´ÙÀ½¿¡ ÇǸ®¿Àµå (.) ¿Í Çʵå À̸§À» ºÙÀÎ °ÍÀ» »ç¿ëÇÕ´Ï´Ù. MOV AL,A.AGE MOV BL,A.HEIGHT MOV CL,A.WEIGHT ¶ó°í ÇÔÀ¸·Î½á AL ·¹Áö½ºÅÍ¿¡ A ¾¾ÀÇ ¿¬·É(=45),BL ·¹Áö½ºÅÍ¿¡ A¾¾ÀÇ ½ÅÀå(=170), CL·¹Áö½ºÅÍ¿¡ A ¾¾ÀÇ Ã¼Áß(=72)ÀÌ Àü¼ÛµË´Ï´Ù. ¶ÇÇÑ Àü¿øÀÇ ¿¬·ÉÀÇ Çհ踦 ±¸ÇÏ·Á¸é MOV AL,A.AGE ADD AL,B.AGE ADD AL,C.AGE ¶ó°í ÇÏ¸é µÇ´Â°ÍÀÔ´Ï´Ù.(¿À¹ö Ç÷οìó¸®(over flow) ´Â »ý·«) ½ºÆ®·°Ã³ÀÇ »ç¿ë¼ø¼­´Â +----------------------------------------+ |½ºÆ®·°Ã³ À̸§¿¡ ´ëÇÑ µ¥ÀÌÅÍ ±¸Á¶ÀÇ Á¤ÀÇ +-+ +----------------------------------------+ | | \/ +--------------------------------------------------------------+ | º¯¼öÀ̸§¿¡ ´ëÇÏ¿© ½ºÆ®·°Ã³ À̸§À» »ç¿ëÇÏ¿© ½ºÆ®·°Ã³Çü | | º¯¼ö¶ó´Â °ÍÀ» Á¤ÀÇÇÔ°ú µ¿½Ã¿¡ ÃʱâÈ­ µ¥ÀÌÅ͸¦ ÁØ´Ù. | +--------------------------------------------------------------+ ´Ü¼øÈ÷ ½ºÆ®·°Ã³ ¼±¾ðÀ» ÇѰ͸¸À¸·Î´Â ¸Þ¸ð¸® »ó¿¡ µ¥ÀÌÅÍ´Â ¼³Á¤µÇÁö¾Ê½À´Ï´Ù. °¢Çʵå À̸§ÀÌ °¡Áö´Â ½ºÅÍ·°Ã³ ¼±µÎ·Î ºÎÅÍÀÇ ¿ÀÇÁ¼Â ¹øÁö()°¡ Ç¥½ÃµÇ¾îÀÖÀ» »Ó ½ÇÁ¦ ¹øÁö»ó¿¡ µ¥ÀÌÅÍ°¡ ¼¼Æ®µÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. A AHW < , , > ¿¡ ÀÇÇÏ¿© µ¥ÀÌÅÍ°¡ ÇÒ´çµË´Ï´Ù. *.µð¹ö°ÅÀÇ G Ä¿¸àµå´Â Äڵ弼±×¸ÓÆ®¿¡ ´ëÇÏ¿© D Ä¿¸àµå´Â µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¸¦ ±âÃÊ·Î ÇÏ¿© ¿ÀÇÁ¼Â¹øÁö¸¦ »ó¿ëÇϵµ·Ï µÇ¾îÀÖ½À´Ï´Ù. ¿¹Á¦) MUL3.ASM º¤ÅÍ ÀÇ ³»Àû°è»ê CODE SEGMENT ASSUME CS:CODE,DS:CODE ; MOV AX,CODE --+DS¼³Á¤ MOV DS,AX --+ MOV AL,VCTA.X IMUL VCTB.X MOV BX,AX MOV AL,VCTA.Y IMUL VCTB.Y ADD BX,AX MOV AL,VCTA.Z IMUL VCTB.Z ADD BX,AX MOV ANS.BX ; MOV AH,4CH INT 21H ; ANS DW ? ; VCT STRUC X DB ? ; X,Y,Z´Â ÇʵåÀ̸§ Y DB ? Z DB ? VCT ENDS ; VCTA VCT <1,-2,3> VCTB VCT <2,3,-1> ; CODE ENDS END 5.11 ³ª´°¼À ¸í·É -------------------------------------------------------------------------------- ³ª´°¼À¸í·É¿¡´Â ºÎÈ£¾ø´Â ³ª´°¼ÀÀ» ÇÏ´Â DIV(divide)¸í¤©·É°ú ,ºÎÈ£°¡ ºÙÀº ³ª´°¼ÀÀ» ÇÏ´Â IDIV(Integer divide)¸í·ÉµîÀÌ ÀÖÀ¾´Ï´Ù.³ª´°¼ÀÀº ±âº»ÀûÀ¸·Î´Â °ö¼À¸í·ÉÀÇ ¿ªÇÔ ¼öÀ̹ǷΠ°ö¼À¸í·ÉÀ¸·Î ºÎÅÍ ¾î´ÀÁ¤µµ »ç¿ë¹ýµîÀ» »ý°¢ÇØ ³¾¼ö°¡ ÀÖÀ¾´Ï´Ù. Á¤¼ö³¢¸® ³ª´°¼ÀÀ» ÇÏ¿´À»¶§,ÀϹÝÀûÀ¸·Î ±ú²àÈ÷ ³ª´²Á® °á°ú°¡ ¾ò¾îÁø´Ù.°í ¸»ÇÒ¼ö¾ø À¾´Ï´Ù.±×·¡¼­ 8086CPU¿¡¼­´Â ³ª´°¼ÀÀÇ °á°ú´Â ¸ò°ú ³ª¸ÓÁö·Î ³ª´©¾î 2°³ÀÇ ·¹Áö½ºÅÍ ¿¡ ÀúÀåÇÕ´Ï´Ù. +--------------------------------------------------------------------+ |16ºñÆ® % 8ºñÆ® | | ÇÇÁ¬¼ö Á¬¼ö ³ª¸ÓÁö ¸ò | | +---+ +----------------------------+ +---+ +---+ | | |AX | % |8ºñÆ®ÀÇ ·¹Áö½ºÅÍȤÀº ¸Þ¸ð¸® |-->|AH | |AL | | | +---+ +----------------------------+ +---+ +---+ | | | | 32ºñÆ® % 16ºñÆ® | | ÇÇÁ¬¼ö Á¦¼ö ³ª¸ÓÁö ¸ò | | +----+---+ +-----------------------------+ +---+ +---+ | | |DX |AX | % |16ºñÆ®ÀÇ ·¹Áö½ºÅÍȤÀº ¸Þ¸ð¸® |--->|DX | |AX | | | +----+---+ +-----------------------------+ +---+ +---+ | +--------------------------------------------------------------------+ ÀÌ°æ¿ì ÀÇ DX:AX·¹Áö½ºÅÍ Ç¥ÇöÀº Áö±Ý±îÁö¿Í ¸¶Âù°¡Áö·Î 32ºñÆ® ·¹Áö½ºÅͷμ­ »ç¿ëµÇ °í ÀÖÀ¾´Ï´Ù.°á°ú°¡ ¸ò°ú ³ª¸ÓÁö¶ó´Â ÇüÅ·ΠµÈ´Ù´Â °Í ¿Ü¿¡´Â ,°ö¼ÀÀÇ ¿ª¿¬»ê(æ½æÑ ß©) À̶ó°í »ý°¢ÇÏ¸é ¿Ü¿ì±â ½¬¿ì¸®¶ó°í »ý°¢µË´Ï´Ù. ¿©±â¼­ ÁÖÀÇÇÏÁö¾ÊÀ¸¸é ¾ÈµÇ´Â °ÍÀº ºÎÈ£°¡ ÀÖ´Â ³ª´°¼ÀÀÇ °æ¿ì·Î¼­ ,À½¼ö¸¦ Æ÷ÇÔÇÏ´Â ³ª´°¼ÀÀÏ °æ¿ìÀÇ ³ª¸ÓÁö ºÎÈ£´Â ¾î¶»°Ô ÇÒ°ÍÀΰ¡ ¶ó´Â »çÇ×Àε¥ ,8086CPU¿¡¼­ ´Â ÇÇÁ¬ ¼öÀÇ ºÎÈ£¿Í ³ª¸ÓÁöÀÇ ºÎÈ£°¡ ÀÏÄ¡ÇÏ´Â °á°ú¸¦ ±¸Çϵµ·Ï µÇ¾îÀÖÀ¾´Ï´Ù. »ç¿ë¹ý: DIV +--¹ü¿ë ·¹Áö½ºÅÍ (8/16 bit) +--¸Þ¸ð¸® (8/16 bit) IDIV +--¹ü¿ë·¹Áö½ºÅÍ (8/16 bit) +--¸Þ¸ð¸® (8/16 bit) ¸í·ÉÀÇ »ç¿ë¹ýÀº °ö¼À¸í·É°ú ºñ¼ýÇؼ­ ÇÇÁ¬¼ö¸¦ ¹Ì¸® AX ·¹Áö½ºÅÍ È¤Àº DX:AX ·¹Áö½º ÅÍ¿¡ ÀúÀåÇÑ´ÙÀ½ ¿¡ ¿ÀÆÛ·£µå¸¦ Á¬¼ö°¡ µé¾î°£ ·¹Áö½ºÅÍ È¤Àº ¸Þ¸ð¸®¿¡ ÁöÁ¤ÇÕ´Ï´Ù. 16ºñÆ® % 8ºñÆ® ÀÎÁö ,32ºñÆ® % 16ºñÆ®ÀÎÁö´Â Á¬¼öÀÇ ÁöÁ¤¿¡ ÀÇÇÑ ·¹Áö½ºÅÍ È¤Àº ¸Þ¸ð ¸®ÀÇ Å©±â¿¡ µû¶ó °áÁ¤µË´Ï´Ù. 0 ¿¡ ÀÇÇÑ ³ª´°¼ÀÀÇ Ã³¸® : ¿©±â¼­ ¹®Á¦µÇ´Â °ÍÀº ,0¿¡ ÀÇÇÑ ³ª´©¼À°ú ¿À¹öÇ÷οì(overflow,ÀÚ¸®³Ñħ)ÀÎ °æ¿ìÀÔ´Ï ´Ù. ³ª´°¼À¿¡ Á¬¼ö·Î¼­ 0 À» ÁöÁ¤ÇÑ °æ¿ì ,³ª´°¼ÀÀ» ÇÒ¼ö°¡ ¾øÀ¾´Ï´Ù.ÀÌ¿Í°°Àº °æ¿ì¿¡ ´Â ¸í·É½ÇÇàÀ» Áß´ÜÇÏ°í INT 0 ÀÎÅÍ·´Æ® ¸¦ ¹ß»ýÇÏ¿© 0 ¿¡ ÀÇÇÑ ³ª´°¼À ó¸® ·çƾÀ¸·Î ½ÇÇàÀ» ¿Å±é´Ï´Ù. [ÀÎÅÍ·´Æ®¶õ ÀÏÁ¾ÀÇ ¼­ºê·çƾ È£ÃâÀ» ¸»ÇÕ´Ï´Ù.] INT 0 ÀÎÅÍ·´Æ®´Â 0 ¿¡ ÀÇÇÑ ³ª´°¼ÀÀ» ½ÇÇàÇÒ¶§¿¡ CPU °¡ ÀÚµ¿ÀûÀ¸·Î °³ÀÔÇÏ¿© ½Ç ÇàÇϴ Ư¼öÇÑ ÀÎÅÍ·´Æ®ÀÔ´Ï´Ù.ÀÌ·çƾ Áß¿¡ 0 À¸·Î ³ª´« °æ¿ìÀÇ Ã³¸®¹ýÀ» ¹Ì¸® ÀÛ¼ºÇØ µÓ´Ï´Ù.(º¸ÅëÀº O.S. µîÀÌ ¼³Á¤ÇØ µÐ´Ù.) ¶ÇÇÑ ³ª´°¼ÀÀ» ½ÇÇàÇÒ¶§¿¡ ¿À¹öÇ÷ο찡 ¹ß»ýÇÏ´Â °æ¿ì°¡ ÀÖÀ¾´Ï´Ù.ÀÌ°ÍÀº ³ª´°¼ÀÀÇ °á°ú¸¦ ÀúÀåÇÏ´Â ·¹Áö½ºÅÍÀÇ Å©±â°¡ Á¤ÇØÁ® Àֱ⠶§¹®¿¡ ,¿¹¸¦ µé¸é 16ºñÆ®%8ºñÆ®¿¡ À־ FFFF%1 ---> FFFF ·ÎµÈ°æ¿ì,°á°ú°¡ 8ºñÆ®·Î µÈ AL ·¹Áö½ºÅÍ¿¡ µé¾î°¡Áö ¾ÊÀ¸¹Ç·Î ¿À¹öÇ÷ο찡 ¹ß»ýÇÕ ´Ï´Ù.ÀÌ¿Í °°Àº °æ¿ìµµ 8086¿¡¼­´Â INT 0 ¸¦ ¹ß»ýÇÏ¿© ½ÇÇàÀ» Áß´ÜÇÕ´Ï´Ù. ¿¹Á¦) DIV1.ASM »ï°¢ÇüÀÇ Áß½ÉÀ» ±¸ÇÏ´Â ¹®Á¦(³ª´°¼À ¼³¸í¿ë) CODE SEGMENT ASSUME CS:CODE,DS:DATA MOV AX,DATA -+DS ¼³Á¤ MOV DS,AX -+ ; MOV AL,A.X CBW ;ALÀ» AX·Î ºÎȣȮÀå MOV BX,AX MOV AL,B.X CBW ADD BX,AX MOV AL,C.X CBW ADD AX,BX MOV BH,3 IDIV BH ; 3À¸·Î ³ª´«´Ù MOV M.X,AL ; MOV AL,A.Y CBW MOV BX,AX MOV AL,B.Y CBW ADD BX,AX MOV AL,C.Y CBW ADD BX,AX MOV AL,C.Y CBW ADD AX,BX MOV BH,3 IDIV BH MOV M.Y,AL ; MOV AH,4CH INT 21H ; CODE ENDS ;----------------- DATA SEGMENT P STRUC X DB ? Y DB ? P ENDS ; A P <12,41> B P <-53,-19> C P ; DATA ENDS END ¿¹Á¦)DIV2.ASM Ãʸ¦ ½Ã°£ ,ºÐ,ÃÊ·Î ¹Ù²Ù´Â ¹®Á¦ CODE SEGMENT ASSUME CS:CODE,DS:DATA SIXTY EQU 60 ; MOV AX,DATA MOV DS,AX ; MOV SI,OFFSET SECOND MOV AX,[SI] MOV DX,[SI+2] MOV BX,SIXTY DIV BX MOV TIME2.SEC,DL MOV BL,SIXTY DIV BL MOV TIME2.MIN,AH MOV TIME2.HOUR,AL ; MOV AH,4CH INT 21H ; CODE ENDS ;------------------ DATA SEGMENT TIME STRUC HOUR DB ? MIN DB ? SEC DB ? TIME ENDS ; SECOND DD 72912 TIME2 TIME < , , > DATA ENDS END ÁÖÀÇ ÇؾßÇÒÁ¡Àº ,DD ¿¡ ÀÇÇØ Á¤ÀÇµÈ ¼ýÀÚ´Â ¸Þ¸ð¸®»ó¿¡¼­ ´Â 1¹ÙÀÌÆ®¾¿ ¿ÏÀüÇÏ°Ô ¼ø¼­·Î ³ª¿­µÈ´Ù´Â °ÍÀÔ´Ï´Ù. 72912(10Áø¼ö)= 00 01 1C D0 ( 16Áø¼ö) ¸Þ¸ð¸®»óÀÇ µ¥ÀÌÅÍ D0 1C 01 00 --+- -+-- ÇÏÀ§16ºñÆ®(¿ª¿öµå) <-+ +-> »óÀ§16ºñÆ®(¿ª¿öµå)