http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1137 [º¹»ç]
.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ºñÆ®(¿ª¿öµå)
|
Hit : 11891 Date : 2008/12/13 11:07
|