1581, 3/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   asdzxc301
   ¾î¼Àºí¸®¾î °­Á 4Æí

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 : 11160     Date : 2008/12/13 11:07



    
1541   ¾Æ ¶Ç °¡Â¥¹é½Å.. ¶Ç Æß;;; ¤Ð¤Ð[3]     dkdkfjgh
12/03 6801
1540   ¾Æ vmware À» ¾î·Á¿ö ÇÏ´Â »ç¶÷ÀÌ ÀÖ³»¿ä ¤§¤§[3]     playground
03/06 7622
1539   ¾ÕÀ¸·Î À̾îÁú ±Û¿¡ ´ëÇؼ­.....[2]     ¼ÒÀ¯
10/06 8459
1538   ¾î¼Àºí¸®¾î °­Á 7Æí ¸¶Áö¸·¿ä ¤¾¤¾[2]     asdzxc301
12/13 10596
1537   ¾î¼Àºí¸®¾î °­Á 6Æí     asdzxc301
12/13 8577
1536   ¾î¼Àºí¸®¾î °­Á 5Æí     asdzxc301
12/13 20841
  ¾î¼Àºí¸®¾î °­Á 4Æí     asdzxc301
12/13 11159
1534   ¾î¼Àºí¸®¾î °­Á 3Æí     asdzxc301
12/13 9586
1533   ¾î¼Àºí¸®¾î °­Á 2Æí     asdzxc301
12/13 8505
1532   ¾î¼Àºí¸®¾î °­Á 1Æí[1]     asdzxc301
12/13 13340
1531   ¾î¼Àºí¸®¾î ÃÑÁ¤¸® °­Á     asdzxc301
12/13 19911
1530   ¾î¼Àºí¸®¾î ÃÑÁ¤¸® °­ÁÂ[8]     gnsehfvlr
05/09 10599
1529   ¾î¼À ¾Æ~~~~~~~ÁÖ ¸ð¸£½Ã´ÂºÐµéÀ» À§ÇÑ -_-;;[7]     hayanho
08/08 10970
1528   ¾î¶²ºÐÀÌ ¿î¿µÇϽô ºí·Î±×ÀÎ´ë °­Ãß ÀÔ´Ï´Ù[6]     lsykoh2
01/17 6598
1527   ¾ÏÈ£¶õ[1]     oldlove7
08/02 8024
1526   ¾Ïȣȭ ÆÐŶ ¾ÏÈ£Çؼ®ÇÏ´Â °ÍÁ» µµ¿ÍÁÖ¼¼¿ä[5]     leewoongki
12/07 8483
1525   ¾Ïȣȭ[3]     leewoongki
12/07 6681
1524   ¾Ë¾à`¹«·á¹é½Å `Á¦2ÀÇ PC±×¸° »çÅÂ`[10]     koresong
11/01 7347
1523   ¾Èµå·ÎÀ̵åSDKÇÁ·ÎÁ§Æ® ´Ü±â°úÁ¤[1]     pshshs
02/17 6251
1522   ¾Èµå·ÎÀÌµå º¸¾È ÄÚµù °¡À̵å ÀÔ´Ï´Ù.     oldlove7
12/11 8632
[1][2] 3 [4][5][6][7][8][9][10]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org