본문 바로가기

Programming/Embedded

[Intro] Assembly Language란?


기계어에 대응되는 Low-Level명령어.


CPU들은 자기들만이 이해할 수 있는 기계어를 가지고 있다. 기계어 명령들은 Memory에 Byte로 저장되어 있는 숫자들이다.


각 명령들은 자기들만의 유일한 Number Code를 가지고 있어 이를 op code( Operation code )라 부른다.


80x86 프로세서 명령의 크기는 각각 다르며 연산 부호는 언제나 명령 앞 부분에 위치한다.


기계어는 직접적으로 프로그래밍하기가 매우 힘들다. 예를 들어 010111010111001010110101010101110010를 해석할 수 있는가?


03 C3의 경우 EAX와 EBX의 register값을 더해서 다시 EAX register에 대입하는 명령어 이다.


위처럼 이해하기 힘들든 기계어의 생성을 위해 assembler라 불리는 프로그램을 통해 기계어와 1:1의 매칭이 되는 프로그램 작성이 가능하다



각각 의 assembly명령들은 하나의 기계명령에 대응된다. 위의 03C3의 경우 add eax, ebx의 assembly명령어로 대체할 수 있다.


이를 통해 단순히 숫자로 나타낸 기계어 보다 훨씬 알기 쉽게 명령을 나타낼 수 있다. 


Assembly Code는 Assembler에 의해 Machine Code를 생성해낸다.

Assembly Code ----------> Assembler -----------> Machine Code


모든 Assembly 문장은 하나의 기계어 문장을 직접적으로 나타낸다.


모든 CPU가 각각 고유의 Machine Code와 Assembly Language를 가지고 있다.