'컴퓨터 언어/Assembly'에 해당되는 글 1건

  1. 2012.09.06 어셈블리 Procedure를 C에서 함수로서 사용하기. #1 기본구성 by 똘이 임덕규
어셈블리에서 프로시져를 만들고 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

저작자 표시
신고


티스토리 툴바