㉠ 어셈블리 언어의 개요 1) 어셈블리 언어의 개념 프로그래밍 언어는 표현하는 방식에 따라 고급 언어, 저급 언어, 기계어로
구분된다.
2) 기계어 일반적으로 프로그래밍을 할 때 BASIC, FORTRAN, PASCAL, C 언어와 같은 고급 언어를 사용한다. 이러한 고급 언어를 사용하는 이유는 고급 언어의 체계가 쉽게 프로그램을 작성할 수 있도록 만들어져 있기 때문이다. 그러나 컴퓨터의 하드웨어가 고급 언어를 이해하고 실행할 수 없기 때문에, 하드웨어가 이해할 수 있는 기계어로 변환되어야 한다. 고급 언어로 작성한 프로그램은 그림과 같이 프로그램 컴파일러에 의하여 컴파일 과정을 거쳐야 기계어로 실행될 수 있다. 기계어는 일련의 0과 1로 표시되며 실행할 명령, 데이터, 기억 장소의 주소 등을 포함한다. 예를 들어, 변수명 A에 데이터 값 3을 저장하는 고급 언어의 치환문을 생각해 보자. A=3 이란 문장을 기계어로 나타내면 다음과 같은 비트 형태로 표시될 수 있다. 11000111 00000110 00000000 00000000 00000011 00000000 저장 명령 A의 주소 데이터 값 위의 기계어는 저장 명령, 데이터를 저장할 기억 장소의 주소, 저장할 데이터를 포함하며 이 기계어가 주기억장치에서 중앙 처리 장치 (CPU)로 불려져 나오면 중앙 처리 장치의 하드웨어 각 부분의 의미를 해독한 후, 제어 신호를 발생시켜 데이터를 지정된 기억 장소에 저장하게 된다. 이처럼 기계어는 하드웨어가 직접 실행시킬 수 있는 형태로 구성되며 컴퓨터의 모든 하드웨어를 제어하기 위한 다양한 비트 형식을 가지고 있다. 3) 어셈블리어
기계어는 하드웨어를 제어하기 위하여 다양한 비트 형식을 가지고 있지만 프로그램을 기계어로 작성한다는 것은 매우 어려운 일이다. 무수히 많은 비트 형식을 외워야 할뿐만 아니라 기억 장소의 주소를 일일이 직접 지정한다는 것은 여간 불편한 일이 아니다. 이러한 프로그래밍 상의 비효율성을 극복하기 위하여 기계어의 비트 형식을 연상 코드 (Mnemonic code)로 나타낸 것이 어셈블리어이다. 연상 코드란 기계어의 비트 형식이 나타내는 의미를 심벌(Symbol)로 표현한 것으로 프로그램을 이해하거나 작성하기가 쉽다. 예를 들어, 위에서 사용한 기계어를 어셈블리어로 나타내면 다음과 같다. MOV A, 3 이러한 표현에서 3이라는 데이터를 A라는 기억 장소에 저장하라는 의미로 쉽게 이해할 수 있다. 따라서 어셈블리어의 연상 코드는 기계어로 직접 변환이 가능하며 쉽게 프로그램을 작성할 수 있는 장점을 가진다. 어셈블리어로 작성한 프로그램을 실행하기 위해서는 기계어로 변환하여야 하는데, 이것은 그림과 같이 어셈블러(Assembler)에 의하여 이루어지며 이 과정을 어셈블리(Assembly)라고 부른다. 어셈블리 과정은 컴파일 과정보다 빨리 수행되는데, 그 이유는 어셈블리어 체계가 기계어 체계와 유사하기 때문이다. 일반적으로 어셈블리어로 프로그래밍을 하는 이유는 다음과 같이 요약할 수 있다. (1) 컴퓨터 하드웨어의 구성 요소들을 직접 억세스하려고 할 때 이러한 목적으로 어셈블리 프로그램을 작성할 때, 고급 언어와는 달리 어셈블리어의 명령어와 문법 체계 외에도 데이터의 표현 방식과 사용하려는 컴퓨터의 프로세서에 대한 기초 지식을 가지고 있어야 한다. 8086 어셈블리 언어의 명령 형식의 형식을 예로 들어보면 다음과 같다. ◎ 8086 어셈블리 명령 형식
◈ Label 부
|