.COM íì¼ì´ë?
COM íì¼ì ë¨ìí ì¼ë ¨ì ëª ë ¹ì´ë ëª ë ¹ì ì¤ííë ë° ì¬ì©ë©ëë¤. COM íì¼ì Windows ëë MS-DOSìì ì¤íí ì ìë ì¤í íë¡ê·¸ë¨ì¼ë¡ 구ì±ë©ëë¤. EXE íì¼ê³¼ ë§ì°¬ê°ì§ë¡ COM íì¼ë ë°ì´ë리 íìì¼ë¡ ì ì¥ëì§ë§ í¤ëë ë©íë°ì´í°ê° ìê³ ìµë í¬ê¸°ê° ì½ 64KBë¼ë ì ìì EXE íì¼ê³¼ ë¤ë¦ ëë¤. COM íì¼ì´ 32ë¹í¸ ìì¤í ìì ì²ì ì¤íëë©´ NTVDM(NT Virtual DOS Machine) êµ¬ì± ìì를 ì¤ì¹íë¼ë ë©ìì§ê° ëíë©ëë¤. COM íì¼ì MS-DOS íê²½ì ì§ìíë ê°ì 머ì ì´ ìë 64ë¹í¸ ë²ì ì Microsoft Windowsìì ì¤íí ì ììµëë¤.
COM íì¼ íì
COM íì¼ íìì Microsoft Windows ëë MS-DOSìì ì¬ì©ëë ë°ì´ë리 ì¤í íìì ëë¤. ê·¸ 구조ë ì¼ë ¨ì ì§ì¹¨ì¼ë¡ 구ì±ë©ëë¤. í¤ëê° ìê³ íì¤ ë©íë°ì´í°ê° í¬í¨ëì´ ìì§ ììµëë¤. 모ë ë°ì´í°ì ì½ë를 íëì ì¸ê·¸ë¨¼í¸ìë§ ì ì¥íê³ ë°ì´ë리ì ìµë í¬ê¸°ë 64KBì ëë¤. ì´ íì¼ íìì ì¬ì¤íì ìëí ë ìì²´ ì¬ë°°ì¹ëì§ ììµëë¤. ë°ë¼ì ì´ì ì²´ì ë 미리 ì¤ì ë 주ììì ë¡ëí©ëë¤. ëí COM íì¼ì fat ë°ì´ë리 íìì¼ë¡ ë ì´ì ì²´ì ìì 모ë ì¤íí ì ììµëë¤. ëª ë ¹ ìì¤ììë ì¤ì í¸íì±ì´ ììµëë¤. ì§ì ì ì ëª ë ¹ì´ë 기ë¥ë©´ìì ëì¼íì§ë§ ë ì´ì ì²´ì ìì ë¤ë¥´ëë¡ ì íëë©° íë¡ê·¸ë¨ì ì¤ííê³ ì¬ì© ì¤ì¸ ì´ì ì²´ì ì¹ì ì¼ë¡ ì íí©ëë¤. 기본ì ì¼ë¡ ì¬ì©í íì¼ì ì ííë ì½ëê° ì íëë ë¨ì¼ íì¼ì ëì¼í ì 차를 ê°ì§ ë ê°ì ë¤ë¥¸ íë¡ê·¸ë¨ì ëë¤.
COM íì¼ ì
COM íì¼ì ì¤íí ë ëª ë ¹ì 첫 ë²ì§¸ ë°ì´í¸ìì ì½ê³ ë§ì§ë§ ëª ë ¹ì ì°¾ì ëê¹ì§ ì°ìì ì¼ë¡ ë°ë¦ ëë¤. ë¤ìì ASM ì½ë ìì ëë¤.
[BITS 16] ;Set code generation to 16 bit mode
[ORG 0x0100] ;Set code start address to 0100h
[SEGMENT .text] ;Main code segment
mov ah, 9 ; DOS print string function
mov dx, hello
int 21h
;Exit to DOS
mov ah, 4ch
int 21h
[SEGMENT .data] ;Initialised data segment
hello: db 'Hello, .COM programmer!',13,10,'$'