어셈블리에서 프로시져를 만들고 C에서 불러오기 위해서 아래와 같이 기본 뼈대를 가지고 시작을 하며 ASM파일은 단지 함수로서 사용하기 때문에 Entry Point는 가지고 있지 않다.

first.asm
..386
.MODEL  FLAT
        
PUBLIC  _EMB                    ;외부에서 접근이 가능하게 한다. 이때 Under Bar를 붙여줘야 외부에서 볼 수가 있다.
        
.CODE                         	;CODE영역 알림.
_EMB    PROC    NEAR32     ;Procedure 의 시작이라는 것을 알리고, NEAR32은 그냥 일반 주소 체계를 쓰겠다는 말.

        mov     eax,    1234
        
        ret                            ;return 값은 EAX 에 들어감 

_EMB    ENDP                    ;함수의 끝을 알림.
      
END                            

first.asm에서 리턴하는 값을 받아서 출력만 해주는 코드이다. 함수원형이 선언 되어있지 않기 때문에 따로 해주어야 한다.
main.c
#include 

int EMB(int, int);

int main()
{
    int i_num;
    
    i_num = EMB(2, 4);
    
    printf("%d\n", i_num);
    
    return 0;
}

두 파일을 합쳐서 사용하기 위해서는 각각의 컴파일러에서 컴파일을 진행을 한다. 여기서 사용하는 어셈블리어는 MASM의 컴파일러인 ML을 사용하도록 한다.
ml /c /coff first.asm
cl /c main.c
cl main.obj first.obj

저작자 표시
신고