마이크로 소프트의 비주얼 스튜디오에는 MASM 어셈블러가 장착되어 있다.

 

예로부터 어셈블리어는 컴퓨터 대학의 전공 수업에나 들을 수 있는 것이 되버려서, 강의도 거의 없고 개발환경을 설치하고 시작하는 것 조차 쉽지 않다.

 

'x86 프로세서를 위한 어셈블리언어 6판은' 국내에 소개된 몇 안되는 어셈블리어 교재이다.

 

어셈블리어를 공부했다면 한번 쯤 들어봤을 것이다. 이 책의 저자인 Kip R. Irvine 교수가 개발한 Irvine32 라이브러리를 사용하면 어셈블리어를 좀 더 수월하게 시작해볼 수 있다.

(Florida International University School of Computing and Information Sciences)

 

MS MASM의 입출력 부분의 기능들을 추가한 라이브러리이다.

 

이 교수의 홈페이지에 파일이 올려져 있는 것으로 알고 있었는데, 워낙 오래전이라 그런지 비주얼 스튜디오에서 작동이 안되는 파일들이 있었다.

 

다행히 작동이 되는 파일이 깃허브에 올라와 있어서 이것으로 실행을 할 수 있다. 아래 깃허브 라이브러리의 파일들을 다운로드 받아서 설치하면 된다. 이 책의 예제 파일들도 다운로드 가능하다.

 

어셈블리언어

 

어셈블리언어. 6/E - 교보문고

『어셈블리언어. 6/E』은 인텔 및 AMD 프로세서를 위한 어셈블리 언어 프로그래밍 구조를 알려준다. 이 책은 어셈블리 언어 프로그래밍, 기초 컴퓨터 시스템, 기초 컴퓨터 구조 등을 설명한 교과��

www.kyobobook.co.kr

 

 

Assembly Language for x86 Processors (6th Edition) 6th (sixth) Edition by Irvine, Kip R. [2010]

Assembly Language for x86 Processors (6th Edition) 6th (sixth) Edition by Irvine, Kip R. [2010]

www.amazon.com

깃허브 Irvine32 라이브러리

 

Eazybright/Irvine32

A library for assembly language. Contribute to Eazybright/Irvine32 development by creating an account on GitHub.

github.com

 

비주얼 스튜디오에서 실행하기 | 설정방법

MS MASM 은 비주얼 스튜디오에서만 실행이 가능하다.

 

과정은 복잡하나 중요한 포인트는 아래와 같다.

 

1. 프로젝트의 빌드종속석을 사용자 지정파일로 바꿔야한다. masm 어셈블러 파일을 지정해야 한다.

 

2. 소스파일의 구성속성에 일반 속성 중 항목형식을 Microsoft Macro Assembler로 바꿔준다. 예제처럼 바꾸지 않았다면 C/C++ 컴파일러로 되어 있다.

 

3. 2번에서 컴파일러를 바꾸면 프로젝트 속성에서 Microsoft Macro Assembler 항목이 생긴다. 여기의 Include Paths를 다운로드 받은 Irvine 파일의 경로를 지정해줘야 한다.

 

4. 링커의 일반에서 추가 라이브러리 디렉터리에도 3번과 같은 Irvine 파일의 경로를 추가해준다.

 

5. 링커의 입력에서 추가 종속성에 irvince32.lib 를 추가해준다.

 

6. 소스파일 편집기에 Irvine32.inc를 추가해준다.

 

 

새프로젝트

 

새프로젝트로 빈프로젝트를 시작한다.

 

새프로젝트

프로젝트 이름을 입력하고 새로운 프로젝트를 만든다.

새항목 추가

프로젝트를 우클릭하여 새항목 추가를 한다.

 

새항목 추가 파일

파일을 새로 만든다. C++ 파일을 선택하고 확장자를 asm 으로 파일을 추가한다.

 

사용자 지정 빌드

다시 프로젝트를 우클릭하여 빌드 종속성 >> 사용자 지정 빌드를 선택한다.

 

비주얼 C++ 빌드 사용자 지정 파일

masm 을 선택하고 확인을 클릭한다.

 

소스파일 - 속성

소스파일을 우클릭 후 속성을 선택한다.

속성에서 항목형식의 Microsoft Macro Assembler를 선택하고 확인을 클릭한다.

다시 프로젝트를 우클릭하여 속성을 클릭한다.

 

속성 페이지의 Microsoft Macro Assembler

속성 페이지의 Microsoft Macro Assembler에서 Include Paths에 깃허브에서 다운로드 받은 폴더의 디렉토리를 입력한다. 

동일하게 링커의 일반 추가 라이브러리 디렉터리도 추가해준다.

 

irvine 폴더

디렉터리는 위와 같이 Lib 파일들이 있는 곳이다.

 

링커의 입력에서 추가종속성에 irvine32.lib; 를 입력한다.

 

편집을 클릭해서 추가 종속성에 irvine32.lib를 입력한다.

 

편집기에 아래와 같은 테스트 코드를 입력한다. Register를 출력하는 코드이다.

INCLUDE Irvine32.inc

.code

main PROC
	mov eax,10000h
	add eax,40000h
	call DumpRegs

	exit

	main ENDP
	end main

EAX에 10000h 40000h를 더했다. 50000h로 정상 출력되었다.

 

여기까지 오류없이 실행되었다면 MASM을 제대로 설정한 것이다.

오류가 한번 나기 시작하면 문제를 찾기 어렵다. 그런 경우 프로젝트를 삭제하고 다시 한번 설치 과정을 반복해본다.

 

또한 컴파일 했을 때 나오는 오류메시지를 인터넷에 검색해본다. irvine32.inc 를 찾을 수 없다는 오류는 라이브러리 추가가 안된 것이다. 그밖에 오타가 나는 것들이 오류의 원인이 될 수 있다. 또는 호환성 문제일 수 도 있으니 구글 검색을 최대한 활용한다. 

공유하기

facebook twitter kakaoTalk kakaostory naver band