본문 바로가기

바이러스개발을위한어셈블리어

어셈블리어 기본

내가 또 다른길로 빠져버렸다... 바로 어셈블리어인데, 오늘은 기본중의 기본을 작성할 예정이다.

사용할 어셈블리어 컴파일러는 SASM이니 이 점 알아두고 지금부터 본론으로 들어가도록 하겠다.

*나도 다른 분의 블로그를 보고 공부하기 때문에 약간 내용이 겹칠 수 있는점 양해 부탁드림...*

 

항상 코딩언어를 처음 배울 때 출력하는 것이 있다. 바로 HELLO "자신이 배울 언어"인데 이 구문을 출력하는 코드를 작성해 보도록 하겠다. 그럼 내가 이번에 출력할 구문이 "HELLO ASSEMBLY"가 되겠지?

 

코드를 먼저 보여주고 설명을 하도록 하겠다.

여기에 어셈블리어 전용 코드블럭이 없어서 아무거나 썼는데 무슨 언어의 코드블럭을 썼는지 맞추면 내가 선물하나드림

 

 

%include "io64.inc" 

section .text 
global CMAIN 
CMAIN:
    PRINT_STRING 'HELLO' 
    NEWLINE 
    PRINT_STRING 'ASSEMBLY'
    xor eax, eax
    ret

%include "*.inc" - c언어 상의 헤더파일과 같은 의미를 가짐. 참고로 .inc는 Include이고 .lib는 Includelib(라이브러리)를 의미한다.

세미콜론 - 다른 언어와는 다르게 여기에선 주석으로 쓰임.

global CMAIN - c언어 상의 main 함수 같은 역할을 한다.

PRINT_STRING - 문자열을 출력할 때 사용한다.

NEWLINE - 줄을 바꿀 때 사용한다.

ret - return의 줄임말. 처음으로 다시 되돌아 간다.

 

같은 내용의 코드를 C언어로 작성했을때, 어셈블리어로 작성했을때를 비교하여 보면서 이만 가보도록 하겠다.

#include <stdio.h>

int main(){
	printf("HELLO ASSEMBLY");
}

**언제나 수정이 이뤄질 수 있는글. 피드백은 환영