관리 메뉴

FU11M00N

[어셈블리어] 어셈블리어란? 기초 이론 1 본문

Programming/Assembly

[어셈블리어] 어셈블리어란? 기초 이론 1

호IT 2020. 4. 11. 20:57

어셈블리어란?

 

0과 1의 이진수로 프로그램을 하는 기계어는 사람이 봤을 때는 
알아보는 게 거의 불가능하고 이를 보완해서 나온 언어가 어셈블리 언어입니다. 
기계어가 CPU의 종류에 따라 다르기 때문에 어셈블리어와 호환성이 잘되어있지않은 언어입니다.

어셈블리어의 특징

  1. 동일한 종류의 프로세스에서만 실행된다.
  2. 프로세서에 대한 사전지식이 필요하다.
  3. 메모리나 입출력장치, 레지스터 등의 구성요소를 직접 다룰 수 있다.
  4. 컴퓨터에서 실행하는 과정 등을 이해하기 쉽다.

사진1-1

고급언어의 특징

자바와 파이썬 같은 고급언어 들은 CPU의 종류가 달라도 컴파일에 지장이 없습니다.
CPU의 기본적인 베이스를 알아둬야 합니다.
어셈블리와 비교했을때 코드가 더 짧고 이해하기 쉽습니다.

컴파일러 VS 어셈블러

- 컴파일러

  1. 고급언어 프로그램 입력
  2. 구문 오류 검사
  3. 목적코드 생성
  4. 한 문장을 여러 개의 기계 코드로 변환.

- 어셈블러

  1. 기계어 형태의 오브젝트 코드로 해석해주는 언어 번역 프로그램
  2. 어셈블리어 프로그램입력
  3. 하나의 어셈블리어 명령어는 하나의 기계 코드에 대응

어셈블리 실행파일 생성 과정

test.asm이라는 어셈블리 텍스트 파일이 어셈블러를 거치면

os규약과 합쳐져 test.obj 코드가 된다.

이후 이 목적 코드가 링커를 거쳐 라이브러리 파일이 합쳐지면 비로소 test.exe가 된다.

어셈블러의 종류

  • MASM - Windows
  • GAS - Linux/Unix
  • NASM - Windows, Linux, MAC
  • SASM - Wiondows, Linux

이중 SASM 은 통합개발 환경으로 GUI, CUI 둘 다 지원하며,

공통 매크로 함수를 지원합니다.

화면 및 키보드 입출력과 관련된 다른 운영체제 서비스를 추상화시킬 수 있습니다.

 

 

글쓴이는 SASM을 이용할 것이고, 

 

다운로드는 https://dman95.github.io/SASM/english.html 이 링크에서 다운로드하면 된다.

 

사진 1-2

설치하고 실행하면 위 그림과 같은 화면이 나올 것이다.

Create new project를 이용해서 새로운 프로젝트를 만들어주시면 생성이 됩니다!

 

Comments