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

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1139 [º¹»ç]


6.5 ÇÁ·Î½Ãµà¾îÀÇ ¹èÄ¡
--------------------------------------------------------------------------------
PROC ~ ENDP ´Â »ç¶÷ÀÌ º¸±â ÆíÇϱâ À§ÇÑ ±¸ºÐ¿¡  ºÒ°úÇÏ´Ù.¾î¼Àºí·¯´Â ½ÇÁ¦·Î ÇÁ·Î½Ã
µà¾î¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù.
¿¹Á¦)CALL2.ASM
CODE    SEGMENT
        ASSUME  CS:CODE
EOF     EQU     1AH

START:  CALL    GETCH
        JC      EXITP  ;--+¿©±â¿¡¼­ ÇÁ·Î½Ãµà¾î¸¦ È£ÃâÇÏ°í ÀÖ´Ù.
        MOV     DL,AL     |
        CALL    PUTCH  ;--+
        JMP     START
EXITP:  MOV     AH,4CH
        INT     21H

GETCH   PROC
        MOV     AH,8
        INT     21H
        CMP     AL,EOF
        JNE     GETCHEND
        STC
        RET
GETCHEND:                 ;±äÀ̸§ÀÇ ¶óº§µµ »ç¿ë°¡´É ±×¶§¶óº§¸¸ÀÇ ÇàÀ¸·Î ÇصµÁÁ´Ù
        CLC
        RET
GETCH   ENDP

PUTCH   PROC
        MOV     AH,2
        INT     21H
        RET
PUTCH   ENDP

CODE    ENDS
        END     START    ;½ÇÇà½ÃÀÛÀ» ¾Ë¸®´Â ¹®Àå

END ¹®ÀÌ °¡Áö´Â ±â´É: ÇÁ·Î±×·¥ÀÇ ½ÃÀÛ¹øÁö¸¦ ÁöÁ¤ÇÑ´Ù.
ÀÌ¿Í°°Àº°ÍÀº ¿©·¯°³ÀÇ ÄÚµå ¼¼±×¸ÕÆ®¸¦ °¡Áø ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´ÙµçÁö ,ÇÁ·Î½Ãµà¾î¿Í
¸ÞÀÎ ·çƾÀÇ ¼ø¼­¸¦ ¹Ù²Û ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â °æ¿ì¿¡´Â Àý´ë·Î ÇÊ¿äÇÏ´Ù.


¿¹Á¦)CALL2-2.ASM
CODE    SEGMENT
        ASSUME  CS:CODE
EOF     EQU     1AH

GETCH   PROC
        MOV     AH,8
        INT     21H
        CMP     AL,EOF
        JNE     GETCHEND
        STC
        RET
GETCHEND:                 ;±äÀ̸§ÀÇ ¶óº§µµ »ç¿ë°¡´É ±×¶§¶óº§¸¸ÀÇ ÇàÀ¸·Î ÇصµÁÁ´Ù
        CLC
        RET
GETCH   ENDP

PUTCH   PROC
        MOV     AH,2
        INT     21H
        RET
PUTCH   ENDP

START:  CALL    GETCH  ; ¸ÞÀÎ ·çƾÀÇ ½ÃÀÛ           <--------------------+
        JC      EXITP  ;--+¿©±â¿¡¼­ ÇÁ·Î½Ãµà¾î¸¦ È£ÃâÇÏ°í ÀÖ´Ù.          |
        MOV     DL,AL     |                                              |
        CALL    PUTCH  ;--+                                              |
        JMP     START                                                    |
EXITP:  MOV     AH,4CH                                                   |
        INT     21H                                                      |
                                                                         |
CODE    ENDS                                                             |
        END     START    ;½ÇÇà½ÃÀÛÀ» ¾Ë¸®´Â ¹®Àå      >------------------+






Á¦7Àå   ¸ðµâº° ÇÁ·Î±×·¥ÀÇ ÀÛ¼º¹ý
--------------------------------------------------------------------------------

7.1 INCLUDE ÀÇ ¹æ¹ý
--------------------------------------------------------------------------------
¸ðµâÈ­ÀÇ ÀÌÁ¡: ÇÁ·Î±×·¥À»±â´É º°·Î ºÐÈ°ÇÏ¿© ¾Ë±â½±°Ô ÇÏ´Â °Í°ú °Â¹ßÈ¿À²À»
               Çâ»ó½Ãų¼öÀÖ´Ù
¾Æ¹«¸® °°Àº ·çƾÀ» »ç¿ëÇÒ¼öÀÖ´Ù°í ÇÏ´õ¶óµµ ,´Ù¸¥ ÇÁ·Î±×·¥À»  ¸¸µé¶§¸¶´Ù. °°Àº
·çƾÀ» Å°º¸µå·Î ºÎÅÍ ÀÔ·ÂÇÏÁö ¾ÊÀ¸¸é ¾ÈµÈ´Ù´Â °ÍÀº ,¿ª½Ã±ÍÂúÀº ÀÛ¾÷ÀÔ´Ï´Ù.
±×·¡¼­ ¿Ï¼ºµÈ ·çƾÀÇ ºÎºÐÀ» ¹Ì¸® ´Ù¸¥ È­ÀÏ ·Î ºÎÅÍ ÀÛ¼ºÇصΰí,¸ÞÀÎ ·çƾ¸¸À» ¿¡µð
ÅÍ·Î ºÎÅÍ ÀÔ·ÂÇÏ¿©,¼­ºê·çƾÀÎ ºÎºÐÀº ³ªÁß¿¡ È­ÀÏ ´ÜÀ§·Î °áÇÕ½ÃÅ°´Â ¹æ¹ýÀ» »ý°¢ÇØ
³ÂÀ¾´Ï´Ù.ÀÌ°ÍÀÌ ¾î¼Àºí·¯¿¡ ÀÖ´Â ÀÎŬ·çµå(INCLUDE) ±â´ÉÀÔ´Ï´Ù.
À̱â´ÉÀ» »ç¿ëÇÒ ¶§¿¡´Â ¿ì¼± ,¼­ºê·çƾ µîÀÇ ºÎºÐÀ» µ¶¸³½ÃŲ È­ÀϷμ­ ÀÛ¼ºÇصΰí ,
¸ÞÀÎ ·çƾÀ» ÀÛ¼ºÇÒ¶§¿¡ ±×Áß ÇÊ¿äÇÑ ºÎºÐÀ¸·Î INCLUDE ÀÇ»ç¸í·ÉÀ» »ç¿ëÇÏ¿©
"INCLUDE È­ÀÏ À̸§ " À¸·Î ÇÑ´ÙÀ½ ,°áÇÕÇÏ´Â È­ÀÏ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù.ÀÌ·¸°Ô Çصθé
¸ÞÀÎ ·çƾÀ» ¾î¼ÀºíÇÒ¶§¿¡ ÀÚµ¿ÀûÀ¸·Î ÇÊ¿äÇÑ È­ÀÏÀÌ °áÇÕµÇ¾î ¾î¼ÀºíµË´Ï´Ù.

CODE    SEGMENT
        ASSUME  CS:CODE,DS:CODE
;
INCLUDE PUTAL.SUB       ; PUTAL.SUB È­ÀÏÀÇ ³»¿ëÀ» ÀοëÇÑ´Ù.
;
START:  MOV     AX,CODE
        MOV     DS,AX

        MOV     AL,3FH
        CALL    PUTAL

        MOV     AH,4CH
        INT     21H

CODE    ENDS
        END     START

B µå¶óÀ̺꿡 PUTAL.SUB È­ÀÏÀÌ µé¾î ÀÖÀ»¶§
INCLUDE B:PUTAL.SUB

INCLUDE ·Î Àü°³µÈ  ºÎºÐÀÇ ¾î¼ÀºíµÈ¸®½ºÆ® È­ÀÏÀº "C " °¡ ºÙ¾îÀÖ´Ù.

µ¿ÀÏ º¯¼ö¿¡ ,¿©·¯°³ÀÇ µ¥ÀÌÅ͸¦ ³ª¿­ÇÒ¶§¿¡´Â ´ÙÀ½ Çà¿¡ º¯¼öÀ̸§À» °¡ÁöÁö¾Ê´Â
DB(define byte) ¼±¾ð µîÀ» °è¼ÓÇÑ´Ù.
        NUM     DB      12H,34H
´Â
        NUM     DB      12H
                DB      34H
¶ó°í ÇÑ°Í°ú °°´Ù.

·¹Áö½ºÅÍÀÇ ´ëÇÇ:
MOV     BXSAVE,BX  --+
CALL    PUTAL        | BX ·¹Áö½ºÅÍÀÇ °ªÀ» ´ëÇÇÇß´Ù°¡ º¹±ÍÇÑ´Ù.
MOV     BX,BXSAVE  --+
        ..........
BXSAVE  DW      ?      ; º¯¼ö ¼±¾ð

7.2 PUSH,POP ¸í·É
--------------------------------------------------------------------------------
PUSH,POP ¸í·ÉÀº ,½ºÅà ¿µ¿ªÀ̶ó°í ºÎ¸£´Â Ưº°ÇÑ ¿µ¿ª¿¡ ´ëÇÏ¿© µ¥ÀÌÅ͸¦  ±â·Ï,Àоî
³»´Â ¸í·ÉÀÔ´Ï´Ù.

½ºÅõ¿ÀÛ(stack operation)
¸¶Áö¸·¿¡ ³ÖÀº °ÍÀ» óÀ½¿¡ ²¨³»´Â µ¿ÀÛ(LIFO,Last In First Out)À» ½ºÅõ¿ÀÛ
¸Þ¸ð¸®´Â ¼ø¼­´ë·Î ³ª¿­µÇ¾î ÀÖÀ¸¹Ç·Î ,ÇöÀç¾îµð±îÁö µ¥ÀÌÅÍ°¡ ½×¿©ÀÖ´ÂÁö¸¦ ³ªÅ¸³»±â
À§ÇÏ¿©,½ºÅà Æ÷ÀÎÅÍ(stack pointer,ST ·¹Áö½ºÅÍÀÇ ÀÏÁ¾)¿¡ ¸¶Áö¸·¿¡ ³õ¿©Áø  µ¥ÀÌÅÍ°¡
ÀÖ´Â ¸Þ¸ð¸®ÀÇ ¹øÁö¸¦ ±â¾ïÇϵµ·Ï µÇ¾îÀÖÀ¾´Ï´Ù.
»õ·Î¿î µ¥ÀÌÅ͸¦ ½×¾Æ¿Ã¸®¸é SP °ªÀº °¨¼Ò ÇÏ°í,µ¥ÀÌÅ͸¦ ²¨³»¸é SP °ªÀº  Áõ°¡
    ¹øÁö    ¸Þ¸ð¸®
ÇÏÀ§¹øÁö |        |
    FFFA  +-------+
    FFFB  +-------+
    FFFC  +-------+  <-- SP(½ºÅÃÆ÷ÀÎÅÍ)¿¡ ÀÇÇØ
    FFFD  +-------+         Áö½ÃµÇ´Â ¸Þ¸ð¸®(¸¶Áö¸·¿¡ ³Ö¾îÁø µ¥ÀÌÅÍ°¡
    FFFE  +-------+         µé¾î ÀÖ´Ù.)
    FFFF  +-------+

ÁÖÀÇ) º¸ÅëÀÇ °æ¿ì¿Í ,µ¥ÀÌÅÍÀÇ ÀúÀå¹ý°ú ¼ø¼­°¡ °Å²Ù·Î µÇ¾î ÀÖÀ¸¹Ç·Î ÁÖÀÇ°¡ ¿äÇÔ
8086ÀÇ PUSH, POP ¸í·É¿¡¼­´Â ¹Ýµå½Ã  2 ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅÍ°¡ Çѹø¿¡ Àоîµé¿©Áö°í ²¨³»
¾îÁö¹Ç·Î, SP ÀÇ °ªÀº Ç×»ó  2¾¿ Áõ°¨ÇÕ´Ï´Ù.
½ºÅÿµ¿ªÀº º¸Åë ¸Þ¸ð¸®ÀÇ ÃÖ»óÀ§ ¹øÁö·Î ¼³Á¤µÇÁö¸¸  ÀÌ°ÍÀº 8ºñÆ® CPU ¿Í °°ÀÌ ¸Þ¸ð
¸®°ø°£ÀÌ Á¼Àº ½Ã½ºÅÛ¿¡ À־ ÇÁ·Î±×·¥°ú ½ºÅûóÀÇ µ¥ÀÌÅÍ°¡ Ãæµ¹ÇÏÁö ¾Ê°Ô ÇϱâÀ§
Çؼ­ ¿´À¾´Ï´Ù.
8086¿¡¼­´Â º¸´Ù ³ÐÀº ¸Þ¸ð¸® °ø°£À» »ç¿ëÇÒ¼ö °¡ ÀÖÀ¸¹Ç·Î ,½ºÅà µ¿ÀÛÀ» À§Çؼ­ ½ºÅÃ
¼¼±×¸ÕÆ®¸¦ µ¶¸³ÇÏ¿© ¼³Á¤ÇÏ°í ÀÖÀ¾´Ï´Ù.
SP °¡ °¡¸®Å°´Â¹øÁö´Â ½ÇÁ¦´Â ½ºÅà ¼¼±×¸ÕÆ®(SS)°¡ °¡¸®Å°´Â º£À̽º ¹øÁö·Î ºÎÅÍÀÇ ¿À
ÇÁ¼Â ¹øÁöÀÔ´Ï´Ù.

½ºÅà ¼¼±×¸ÕÆ®ÀÇ ¼³Á¤¹ý¿¡ ÀÇÇØ ÇÁ·Î±×·¥À̳ª µ¥ÀÌÅÍ¿Í ½ºÅ÷ָ¦ µ¶¸³ÇÏ¿© ¹èÄ¡ÇÒ¼öµµ
ÀÖ°í,¶ÇÇÑ 8ÁöÆ® CPU¿Í °°ÀÌ ÇÁ·Î±×·¥°ú ½ºÅÃÀ» µ¿ÀÏÇÑ ¸Þ¸ð¸® °ø°£¿¡ ¹èÄ¡ÇÒ  ¸Þ¸ð¸®
°ø°£¿¡ ¹èÄ¡ÇÒ¼öµµ ÀÖÀ¾´Ï´Ù.
¾î´À°æ¿ì¿¡¼­µµ ½ºÅà Æ÷ÀÎÅÍÀÇ ÃʱâÄ¡¸¦ Àû´çÇÏ°Ô ¼³Á¤ÇÔÀ¸·Î½á Àû´çÇÑ ¹øÁö¸¦ ½ºÅÿµ
¿ªÀÇ ½ÃÀÛ ¹øÁö·Î ÇÒ¼ö°¡ Àִµ¥ ,º¸ÅëÀº ÃÖ»óÀ§ ¹øÁö·Î ºÎÅͽÃÀÛÇÕ´Ï´Ù.

CS -->+--------+--- ÇÁ·Î±×·¥            |            |
      +--------+                CS,SS ->+------------|
      +--------+                        |            |ÇÁ·Î±×·¥
SS -->+--------+                        +------------+
      +--------+ SP½ºÅÿµ¿ª             +------------+<-- SP
      +--------+                        +------------+    ½ºÅÿµ¿ª
CS¿Í SS ¸¦ µ¶¸³½ÃŲ °æ¿ì          CS¿Í SS¸¦ ÀÏÄ¡½ÃŲ °æ¿ì
                                 ( 8ºñÆ® CPU ¿Í °°Àº »ç¿ë¹ý )
+-----------------------------------------+
| PUSH  +-  16ºñÆ® ¹ü¿ë ·¹ÁöÆ®ÅÍ -+       |
|       |   ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ      |      |
|       +-  16ºñÆ® ¸Þ¸ð¸®         -+      |
| POP   +-  16ºñÆ® ¹ü¿ë ·¹Áö½ºÅÍ -+       |
|       |   ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ      |      |
|       +-  16ºñÆ® ¸Þ¸ð¸®         -+      |
+-----------------------------------------+
*.POP CS ¸í·É¸¸Àº Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
  IP¸¦ PUSH, POP ÇÏ´Â ¸í·ÉÀº ¾ø´Ù.
  Ç÷¹±× ·¹Áö½ºÅ͸¦ PUSH, POP ÇÏ´Â ¸í·ÉÀ¸·Î´Â À§¿Í º°µµ·Î PUSHF, POPF¸í·ÉÀ» »ç¿ë


PUSH, POP ¸í·ÉÀÇ ½ÇÁ¦ »ç¿ë ¿¹:
·¹Áö½ºÅÍÀÇ ´ëÇÇ°¡ ÇÊ¿ä ÇÏ°Ô µÈ°ÍÀº  ¼­ºê·çƾ Áß¿¡¼­ ·¹Áö½ºÅÍÀÇ ³»¿ëÀÌ Æı«  µÇ±â
¶§¹®ÀÔ´Ï´Ù. ¾î´À ·¹Áö½ºÅÍÀÇ ³»¿ëÀÌ  Æı«µÇ´ÂÁö´Â ¼­ºê·çƾÀÇ ³»¿ëÀ»  º¸Áö¾Ê°í¼­´Â
¾Ë¼ö¾øÀ¾´Ï´Ù. ±×·¡¼­ ·¹Áö½ºÅÍÀÇ ´ëÇÇ, º¹±Í´Â ¸ÞÀÎ ·çƾÂÊÀÌ ¾Æ´Ï¶ó ¼­ºê·çƾ ÂÊ¿¡
¼­ ÇÏ´Â °ÍÀÌ ÀûÀý ÇÕ´Ï´Ù.

+--------------+                 +--------------+
| ¸ÞÀηçƾ     |                 |¸ÞÀηçƾ      |
| ........     |                 |  .....       |
| PUSH BX      |                 |CALL PUTAL    |
| CALL  PUTAL  |  <--+           |   .....      |
| POP  BX      |     |           |              |
+--------------+     |           +--------------+
+--------------+     |           +---------------+
|¼­ºê·çƾ      +-----+           |¼­ºê·çƾ       |
+--------------+                 |PUSH BX        |
PUSH ,POP ¸¦ ¸ÞÀηçƾÂÊ¿¡¼­      |  .....        |
   ÇàÇÑ°æ¿ìÀÇ ÇÁ·Î±×·¥           |POP BX         |
                                 +---------------+
                                 PUSH,POP¸¦ ¼­ºê·çƾÂÊ¿¡¼­ ÇàÇÑ °æ¿ìÀÇ ÇÁ·Î±×·¥
¿ÏÀüÈ÷ °°Àº µ¿ÀÛÀ» ÇÏÁö¸¸ ¿À¸¥ÂÊÀÌ ´õ ÁÁÀº ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
¸ÞÀÎ ·çƾÂÊ¿¡¼­ ¾î´À ·¹Áö½ºÅÍ°¡ ¼­ºê·çƾ ³»¿¡¼­ º¯°æÀ̳ª Æı«µÇ´Â°¡¸¦ »ý°¢ÇÏÁö
¾Ê¾Æµµ µÇ±â ¶§¹®ÀÔ´Ï´Ù.
¼­ºê·çƾÀ» ¿ÏÀüÈ÷ ºí·¢ ¹Ú½º ·Î¼­ »ç¿ëÇÒ¼ö°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.
ÀÌ¿Í °°ÀÌ ÇÔÀ¸·Î½á ¼­ºê·çƾÀÇ ¸ðµâÈ­°¡ Á¡Á¡ È¿À²ÀûÀ¸·Î µË´Ï´Ù.

¿¹Á¦)PUSH1.ASM
BL¿¡ ÃʱâÄ¡·Î ÁÖ¾îÁø ¾î¶² 8ºñÆ® °ª()À» 1¹è,2¹è,..., F¹è ÇѼöÄ¡¸¦ Ãâ·ÂÇÑ´Ù.
CODE    SEGMENT
        ASSUME  CS:CODE,DS:CODE
;
INCLUDE PUTAL2.SUB
INCLUDE CRLF.SUB
;
ENTRY:  MOV     AX,CODE  -+
        MOV     DS,AX    -+DS¼³Á¤
;
        MOV     BL,SEED ;Ãʱ⠵¥ÀÌÅÍ 21H¸¦ BL ¿¡ ÁöÁ¤ÇÑ´Ù.
        MOV     CL,1
NEXT:   CMP     CL,10H  ;10H¹èÀÌ¸é ³¡³².
        JE      EXITP
        MOV     AL,CL   -+Ãʱ⠵¥ÀÌÅÍÀÇ BL¹è¸¦ ±¸ÇÑ´Ù.
        MUL     BL,     -+
        PUSH    AX       --+
        MOV     AL,AH   -+-+---- »óÀ§ ¹ÙÀÌÆ® Ãâ·Â
        CALL    PUTAL   -+ |
        POP     AX       --+-- AX·¹Áö½ºÅ͸¦ º¸Á¸(Ãâ·Â¿¡ AL ·¹Áö½ºÅ͸¦ »ç¿ëÇϱâ
        CALL    PUTAL  ;ÇÏÀ§ ¹ÙÀÌÆ® Ãâ·Â                               ¶§¹®  )
        CALL    CRLF   ;°³Çà
        INC     CL
        UMP     NEXT
EXITP:  MOV     AH,4CH  -+
        INT     21H     -+³¡³»°íMS-DOS ·Î ±Íȯ
;
SEED    DB      21H  ;Ãʱ⠵¥ÀÌÅÍ
CODE    ENDS
        END     ENTRY


PUTAL2.SUB
PUTAL:
   +--- PUSH    AX -+;¼­ºê·çƾ ¼Ó¿¡¼­ ·¹Áö½ºÅÍ
   |+-- PUSH    BX  | AX,BX,DX ¸¦ ´ëÇÇÇÏ°í ÀÖ´Ù
   ||+- PUSH    DX -+
   |||  MOV     BL,10H
   |||  MUL     BL
   |||  MOV     DL,AH
   |||  CALL    PUTHEX  ; »óÀ§ÀÚ¸®¸¦ Ãâ·Â
   |||  MOV     AH,0
   |||  MOV     BL,10H
   |||  DIV     BL
   |||  MOV     DL,AL
   |||  CALL    PUTHEX  ;ÇÏÀ§ÀÚ¸®¸¦ Ãâ·Â
   ||+- POP     DX -+ AX,BX,DX ¸¦ º¹±Í
   |+-- POP     BX  |  (PUSH¿Í ÀÇ ¿ª¼ø)
   +--- POP     AX -+
        RET
;
PUTHEX: PUSH    AX
        PUSH    DX
        CMP     DL,0AH
        JAE     HEX2
        ADD     DL,'0'
        JMP     HEX3
HEX2:   ADD     DL,'A'-0AH
HEX3:   MOV     AH,2
        INT     21H
        POP     DX
        POP     AX
        RET



CRLF.SUB
CRLF:
    +-- PUSH    AX
    |+- PUSH    DX
    ||  MOV     DL,0DH  ;CR(º¹±Í)À» Ãâ·Â
    ||  MOV     AH,2 -+
    ||  INT     21H  -+
    ||  MOV     DL,0AH
    ||  MOV     AH,2 -+ ;LF(°³Çà)À» Ãâ·Â
    ||  INT     21H  -+
    |+- POP     DX
    +-  POP     AX
        RET

PUSH,POP ¸í·ÉÀº 16ºñÆ®·Î µÈ ·¹Áö½ºÅÍ¿¡ ,ȤÀº ¸Þ¸ð¸®¿¡ ´ëÇÇ,º¹±Í¹Û¿¡ ÇÏÁö  ¸øÇϹÇ
·Î ,¼­ºê·çƾ ³»ÀÇ DL·¹Áö½ºÅÍ ¹Û¿¡ »ç¿ëÇÏÁö ¾Ê´Â°æ¿ì¿¡µµ DX·¹Áö½ºÅͷμ­ ´ëÇÇÇÑ´Ù.
        PUSH    AX  ; AXÀÇ ³»¿ëÀ» BX¿¡ Àü¼Û
        POP     BX

Á÷Á¢ Àü¼ÛÀ» Çã¿ëÇÏÁö ¸øÇÏ´Â ¼¼±×¸ÕÆ®°£ÀÇ °ªÀ» Àü¼ÛÇϴµ¥ À¯È¿ÇÕ´Ï´Ù.
¿¹)    PUSH    CS
        POP     DS

°¡ÀåÁÖÀÇ ÇؾßÇÒÁ¡:
ÇϳªÀÇ ¼­ºê·çƾ Áß¿¡¼­ PUSH ÇÑ°ÍÀº ±× ·çƾ ³»¿¡¼­ ¹Ýµå½Ã POP ÇÑ´Ù.


7.3 ÇÁ·Î±×·¥ÀÇ ¸ðµâÈ­¿Í ¸µÅ¬¹æ¹ý
--------------------------------------------------------------------------------
¸ðµâÈ­µÈ ÇÁ·Î±×·¥À» µû·Î º°µµ·Î ¾î¼ÀºíÇÏ°í ,LINK¿¡ ÀÇÇØ °áÇÕ ÇÒ¼öµµ ÀÖÀ¾´Ï´Ù.
+-----------------------------------------------------------------------------+
|¸ÞÀÎ ÇÁ·Î±×·¥  ¼­ºêÇÁ·Î±×·¥             ¸ÞÀÎ ÇÁ·Î±×·¥   ¼­ºêÇÁ·Î±×·¥         |
|    |                |                          \/       \/                  |
|    +->    MASM    <-+                         MASM      MASM                |
|            \/                                  \/        \/                 |
|      ¿ÀºêÁ§Æ® ÇÁ·Î±×·¥            ¿ÀºêÁ§Æ® ÇÁ·Î±×·¥     ¿ÀºêÁ§Æ® ÇÁ·Î±×·¥   |
|            \/                                       \/                      |
|           LINK                                      LINK                    |
|            \/                                       \/                      |
|     ½ÇÇà°¡´É ÇÁ·Î±×·¥                         ½ÇÇà°¡´É È­ÀÏ                 |
|                                                                             |
| ¾î¼Àºí´Ü°è¿¡¼­ °áÇÕÇϴ°æ¿ì               ¸µÅ© ´Ü°è¿¡¼­ °áÇÕÇÏ´Â °æ¿ì       |
+-----------------------------------------------------------------------------+

¿ÀºêÁ§Æ® ´Ü°è¿¡¼­ ¸µÅ©°¡ °¡´ÉÇϱ⠶§¹®¿¡ ,MS-DOS¿¡¼­´À °øµ¿Çü½Ä¤·ÀÇ ¿ÀºêÁ§Æ®  È­
ÀÏÀ» ÀÛ¼ºÇÏ´Â ¾î¼Àºí·¯³ªÄÄÆÄÀÏ·¯ÀÇ Ãâ·ÂÀ» ÇÕÃļ­ ÇϳªÀÇ ½ÇÇà°¡´É  ÇÁ·Î±×·¥Çϴ°Í
ÀÌ °¡´ÉÇÏ´Ù.
À̶§¹®¿¡ ¾î¼Àºí·¯¿Í C ¾ð¾î¿Í ÀÇ ¸µÅ© µîÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù.
±×·¯³ª ¸µÅ©ÀÇ ±â´ÉÀ» Àß »ç¿ëÇϱâ À§Çؼ­´Â ,¸¹Àº Çü½Ä»çÀÇ ¾à¼ÓÀ̳ª ¸µÄ¿ÀÇ  µ¿ÀÛÀ»
ÀÌÇØÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ¾Æ¼­ ±× °³¿ä¸¦ ¼³¸íÇÏ´Â °Í¸¸Çصµ »ó´çÇÑ ºÐ·®À» Â÷ÁöÇÏ°Ô µË´Ï
´Ù.
ÇÁ·Î±×·¥ÀÇ °³¹ß¿¡ ´ëÇؼ­´Â ¸ÞÀÎ ÇÁ·Î±×·¥À» Æ÷ÇÔÇÏ´Â ¸ðµâÀÇ ¼Ò½º ÇÁ·Î±×·¥°ú ¼­ºê
·çƾÀ¸·Î ÀÌ·ç¾îÁö´Â ¼Ò½º ÇÁ·Î±×·¥À¸·Î ÀÛ¼ºÇÕ´Ï´Ù.

¿¹Á¦)MODULE1.ASM
¹®ÀÚ¿­(string)  We are the world  ¸¦  Ãâ·ÂÇÑ´Ù.
CODE    SEGMENT PUBLIC
        ASSUME  CS:CODE,DS:DATA
;
EXTRN   PUTSTR:NEAR    ¿ÜºÎ¿¡¼­ ÂüÁ¶ÇÏ´Â ¼­ºê·çƾÀÇ ¼±¾ð
;
START:  MOV     AX,DATA
        MOV     DS,AX
        MOV     BX,OFFSET MSG
        CALL    PUTSTR
        MOV     AH,4CH
        INT     21H
;
CODE    ENDS
;
DATA    SEGMENT PUBLIC
MSG     DB      'We are the world',00H
;                                   |
DATA    ENDS                        +-->³¡³»±â À§ÇØ »ðÀÔµÈ 0 ÀÌ´Ù.
        END     START

PUTSTR.ASM
¹®ÀÚ¿­À» Ãâ·ÂÇÏ´Â ¼­ºê·çƾ
CODE    SEGMENT PUBLIC
        ASSUME  CS:CODE
;
PUBLIC  PUSTR    ;´Ù¸¥ ¸ðµâ¿¡¼­ ÂüÁ¶µÇ´Â ¼­ºê·çƾ À̸§À» PUBLIC ÀÇ»ç¸í·ÉÀ¸·Î
;                  ¼±¾ðÇÑ´Ù. Áï ´Ù¸¥µ¥¼­ PUTSTRÀ» ÂüÁ¶ÇÒ°ÍÀ̶ó°í ¼±¾ðÇÔ.
PUTSTR  PROC    NEAR      --+
        PUSH    AX          |
        PUSH    DX          |
        PUSH    SI          |
        MOV     SI,0        |
PUT_NET:                    |
        MOV     DL,[BX+SI]  |
        CMP     DL,0     -+-+----->¹®ÀÚ¿­Áß 0 ÀÌ ³ªÅ¸³ª¸é ³¡³½´Ù.
        JZ      PUT_EXIT -+ |
        MOV     AH,2        |¹Ýµå½Ã ¼­ºê·çƾ
        INT     21H         | PROC ~   ENDP ·Î
        INC     SI          | ¼±¾ðÇÑ´Ù.
        JMP     PUT_NEXT    |
PUT_EXIT:                   |
        POP     SI          |
        POP     DX          |
        POP     AX          |
        RET                 |
PUTSTR  ENDP      ----------+
;
CODE    ENDS   Çü½Ä»ó ÇϳªÀÇ ¼¼±×¸ÕÆ®¿¡ ÀÖ´Â °É·ÎÇÑ´Ù.
        END


¼­ºê·çƾ PUTSTRÀº ,BX¿¡ ÀÇÇØ °£Á¢ÁöÁ¤µÇ´Â ¹øÁö¸¦ ¼±µÎ·Î Çѵ¥ÀÌÅÍ ¿­À»
¹®ÀÚ¿­·Î¼­ Ãâ·ÂÇÏ°í ,0 ÀÌ ³ªÅ¸³ª¸é Á¾·áÇÏ´Â °ÍÀÔ´Ï´Ù.

PUBLIC À̶ó´Â ÁöÁ¤Àº : ´Ù¸¥ ¸ðµâ°ú ¸µÅ©ÇÒ ¶§¿¡ °°Àº À̸§ÀÇ ¼¼±×¸ÕÆ®°¡ ÀÖ´Ù¸é
                       ±×°ÍÀ» ÇÕÃļ­ Çϳª·Î Ç϶ó, ¶ó´Â ÁöÁ¤ÀÔ´Ï´Ù.
EXTRN(external)    :
  ¿­°ÅµÈ ¼­ºê·çƾÀÌ ¿ÜºÎÀÇ ¸ðµâÀÇ ¸ðµâ ¼Ó¿¡ µé¾îÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³»°í ÀÖÀ¾´Ï´Ù.
¾î¼Àºí·¯´Â ´õ¼Àºí ´Ü°è¿¡¼­ °°Àº ¸ðµâ ³»ÀÇ ¼­ºê·çƾÀ̳ª ¶óº§ÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì
¿¡´Â Symbol not defined ¿¡·¯¸¦ ¹ß»ýÇϴµ¥,   EXTRN  ÀÇ»ç¸í·É¿¡ ÀÇÇØ ¼±¾ðµÇ¾î ÀÖ
°ÔµÇ¸é ,±×¼­ºê·çƾÀ̳ª ¶óº§Àº ´Ù¸¥ ¸ðµâ¿¡ À־ ¸µÅ©ÇÒ¶§ °áÇÕÇÒ¼öÀÖ´Ù°í  °£ÁÖµÇ
¾î ¿¡·¯¸¦ ¹ß»ýÇÏÁö ¾Ê°í ¾î¼ÀºíÀ» °è¼ÓÇÕ´Ï´Ù.
¶óº§À̸§ÀÌ µ¿Àϼ¼±×¸ÕÆ® ³»¿¡ ¹èÄ¡µÇ´Â °ÍÀÎ °æ¿ì¿¡´Â ,
       : ¿¡ ¹Ù·Î À̾ NERÀ» ºÙÀÌ°í, ¶óº§ÀÇ ¼Ó¼ºÀ» ¼±¾ðÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
¸¸Àϵ¿ÀÏ ¼¼±×¸ÕÆ®³»¿¡ Á¸ÀçÇÏÁö ¾ÊÀ» ¶§¿¡´Â ,
        :   FAR À» ºÙÀÌÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.

¼­ºê·çƾ :
¼­ºê·çƾ¿¡ ³õÀÌ´Â ¸ðµâµµ ÇϳªÀÇ ¼¼±×¸ÕÆ®·Î¼­ Çü½ÄÀ» °®Ãß±âÀ§ÇØ ±× ¾ÕµÚ¸¦
SEGMENT ~ ENDS ·Î µÑ·¯ ½Ô´Ï´Ù.¿©±â ¿¡¼­ ¼¼±×¸ÕÆ®¼±¾ðÀº ¸ÞÀηçƾ°ú °°Áö¾ÊÀ¸¸é ¾È
µË´Ï´Ù.(µ¿ÀÏÇѼ¼±×¸ÕÆ® À̸§À̾î¾ß ÇÑ´Ù)   µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®¸¦ »ç¿ëÇÏÁö¾ÊÀ» ¶§¿¡´Â
ASSUME ¹®ÀåÀ¸·Î DS ¼±¾ðÀ» ÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù.

PUBLIC   :
ÀÇ»ç¸í·É À¸·Î PUTSTR À̶ó´Â À̸§ÀÇ ¼­ºê·çƾ(¶óº§ À̸§)ÀÌ ´Ù¸¥ ¿ÜºÎÀÇ ¸ðµâ¿¡¼­ Âü
Á¶ °¡´ÉÇϴٴ  °ÍÀ» ¼±¾ðÇÏ°í ÀÖÀ¾´Ï´Ù.ÀÌ°ÍÀº ÀÌ ·çƾ Áß ¾î´À ¶óº§ À̸§´Ï ¿ÜºÎÂü
Á¶°¡ °¡´É ÇÏ´Ù´Â °ÍÀ» ³ªÅ¸³»´Â °Í ÀÔ´Ï´Ù.
¿©±â¼­ »ç¿ëÇÏ°í ÀÖ´À PUBLC °ú ¼¼±×¸ÕÆ®  ¼±¾ðÁß¿¡ »ç¿ëµÇ°í ÀÖ´À PUBLC°ú´Â ´Ù¸¥ °Í
ÀÔ´Ï´Ù.    ±×¸®°í ¼­ºê·çƾ ÀüÈĸ¦ PROC ~ ENDP ¿¡ ÀÇÇØ µÑ·¯½Î°í, ±¸Á¶¸¦ ¸íÈ®ÇÏ°Ô
ÇÕ´Ï´Ù. ÀÌÀü°ú ¸¶Âù°¡Áö·Î ´Ü¼øÈ÷ ¶óº§ À̸§¸¸À» ¼­ºê·çƾÀ¸·Î ÇÒ¼öµµ ÀÖÁö¸¸,  º°·Î  
ÃßõÇÒ¸¸ ÇÏÁöÇÏÁö´Â ¾Ê½À´Ï´Ù. ±×¸®°í PROC ÀÇ  ´ÙÀ½ÀÇ NEAR Àº ¾ø¾îµµ »ó°üÀÌ  ¾øÁö
¸¸,À̰͵µ µ¿ÀÏÇÑ ¼¼±×¸ÕÆ® ³»¿¡¼­ ÂüÁ¶ µÇ´Â    ¶óº§À̶ó´Â °ÍÀ» ³ªÅ¸³»°í ÀÖÀ¾´Ï´Ù.
ÀÌ»óÀÇ °ÍÀ» Á¤¸®ÇÏ¿© ÇÁ·Î±×·¥¿¡ ÇÊ¿äÇÑ ±¸Á¶¸¦ ³ªÅ¸³»°í¸é ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
(¼¼±×¸ÕÆ® À̸§À» CODE , ¼­ºê·çƾ À̸§À» PUTSTR  ·Î ÇÑ´Ù.)

+-------------   ¸ÞÀηçƾ   -------------------------------------+
|       CODE    SEGMENT PUBLC                                    |
|               ASSUME  CS:CODE.......                           |
|       EXTRN   PUTSTR:NEAR                                      |
|       START:                                                   |
|               +---------+                                      |
|               | º»  ¹®  |                                      |
|               +---------+                                      |
|       CODE    ENDS                                             |
|               +----------------------------------+             |
|               | ¸¸ÀÏ ÀÖ´Ù¸é µ¥ÀÌÅÍ ¼¼±×¸ÕÆ® µî   |             |
|               +----------------------------------+             |
|               END     START                                    |
+----------------------------------------------------------------+


+-------   ¼­ºê·çƾ   -------------------------+
|       CODE    SEGMENT PUBLC                  |
|               ASSUME  CS:CODE.....           |
|       PUBLC   PUTSTR                         |
|       PUTSTR  PROC    NEAR                   |
|             +---------+                      |
|             | º»  ¹®  |                      |
|             +---------+                      |
|       PUTSTR  ENDP                           |
|       CODE    ENDS                           |
|               END                            |
+----------------------------------------------+

¿ÀºêÁ§Æ® È­ÀÏÀ» ¸µÅ©ÇÒ ¶§¿¡´Â È­ÀÏ À̸§À»  " + " ·Î ¿¬°áÇÏ¿© ÁöÁ¤ÇÕ´Ï´Ù.
¹Ýµå½Ã ¸ÞÀÎ ·çƾÀ» Æ÷ÇÔÇÏ´Â ¸ðµâÀÇ È­ÀÏ À̸§À» ¼±µÎ¿¡  ÁöÁ¤ÇÕ´Ï´Ù.

A>LINK MODULE1+PUTSTR,,MODULE1;

ÀÌ°ÍÀ¸·Î ½ÇÇà°¡´É È­ÀÏÀÌ ¿Ï¼ºµË´Ï´Ù.
ÀڱⰡ ¸ðµâÀ» ¸¸µé¾î ³ª°¥¶§¿¡´Â À§·¹¼­ ¼³¸íÇÑ   ¹æ¹ý¿¡ µû¶ó¼­ ¸ðµâÀ¸ °³¹ßÇÏ¸é µÇ
´Âµ¥, ¾Æ¸¥ Âü°í¼­ ·Î ºÎÅÍ ÀοëÇÒ °æ¿ì¿¡ ¹Ýµå½Ã À§¿Í °°Àº ´ë·Î µÇ¾î ÀÖÁö ¾ÊÀº  °æ
¿ì°¡ ÀÖÀ¾´Ï´Ù. ±×¿Í °°Àº °æ¿ì¿¡´Â ¼¼±×¸ÕÆ®  À̸§À» °íÃÄ ¾²´Â ¹æ¹ý µîÀ¸·Î  ´ëóÇØ
ÁֽʽÿÀ. ±×·¡µµ ¾ÈµÇ´Â°Ü¿ì¿¡´Â ¿øÀÎÀ» ¿©·¯°¡Áö·Î »ý°¢ ÇÒ¼ö°¡  ÀÖÁö¸¸,ÀÚ¼¼ÇÏ°Ô´Â
³ªÁß¿¡ ´Ù·çµµ·Ï ÇÏ°í ,ÇÒ¼ö¾øÀÌ  ¼­ºê·çƾ ÀÚü¸¦ ¸Âµµ·Ï ÀڱⰡ ´Ù½Ã º£¿­ ÇÏ¿© °í
ÃÄ ÀÛ¼ºÇÏ´Â µî ½ÃÇàÂø¿À¸¦ ÇØ º¸½Ê½Ã¿ä.



  Hit : 8628     Date : 2008/12/13 11:08



    
     [°øÁö] °­Á¸¦ ¿Ã¸®½Ç ¶§´Â ¸»¸Ó¸®¸¦ ´Þ¾ÆÁÖ¼¼¿ä^¤Ñ^ [29] ¸Û¸Û 02/27 18747
1580   °í¼ö´ÔµéÀÇ µµ¿òÀ» ¹Þ°í ½Í½À´Ï´Ù     vbnm111
02/11 192
1579   ¸®´ª½º Ä¿³Î 2.6 ¹öÀü ÀÌÈÄÀÇ LKM     jdo
07/25 701
1578   ½©ÄÚµå ¸ðÀ½     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/15 1525
1577   Call by value VS Call by Reference     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/15 906
1576   (²Ä¼ö) L.O.B Çѹ濡 Ŭ¸®¾îÇϱâ[2]     ÇØÅ·ÀßÇÏ°í½Í´Ù
01/14 1243
1575   towelroot.c (zip) ÄÚ¸àÆÃ.[1]     scube
08/18 3766
1574   levitator.c (¾Èµå·ÎÀÌµå ·çÆÃ) °ø°Ý ºÐ¼® ¼Ò½º ÄÚµå °øÀ¯.[4]     scube
08/17 3679
1573   ¹«·á Á¤º¸º¸¾È ±â¼úÀÎÀç ¾ç¼º °úÁ¤ ±³À°»ý ¸ðÁý     chanjung111
06/17 4473
1572   K-Shield ÁִϾî 5±â ¸ðÁý     lrtk
06/17 4206
1571   [ÆÁ] ÆÄÀ̽ã 2¼Ò½º¸¦ 3À¸·Î º¯°æÇØÁÖ´Â »çÀÌÆ®[3]     ÇѽÂÀç
05/13 3918
1570   ±¸±Û ¹é¸µÅ© ÀÛ¾÷ Áú¹®¿ä     wkatnxka
03/30 3351
1569   [ÆÁ] ¿ìºÐÅõ ¹Ì·¯¸µ¼­¹ö     ÇѽÂÀç
03/09 4046
1568 ºñ¹Ð±ÛÀÔ´Ï´Ù  °¨À»¸øÀâ°Ú³×¿ä¤Ì¤Ì     À×À×À×
01/15 3
1567   µ¥ºñ¾È °è¿­ ¸®´ª½º ÀÇÁ¸¼º ±úÁ³À»¶§ ÇØ°á¹ý     ÇѽÂÀç
11/27 4517
1566   È«º¸ÇÕ´Ï´Ù. ½Å»ý º¸¾ÈÄ¿¹Â´ÏƼÀÔ´Ï´Ù.     kimwoojin0952
10/26 4253
1565   ½Å±âÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î[3]     koreal33t
09/06 4646
1564   À©µµ¿ì,¸®´ª½º¿¡¼­ ³» ip¸¦ È®ÀÎÇØ º¸ÀÚ [1]     koreal33t
09/06 3850
1563   CTF »çÀÌÆ®[1]     koreal33t
09/06 4508
1562   ÀÚ°ÝÁõ (¹®Á¦)»çÀÌÆ® [2]     koreal33t
09/06 4324
1 [2][3][4][5][6][7][8][9][10]..[80]

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