728x90
728x90

어셈블리어란

이진수로 구성된 기계어는 사람이 봤을 때는 알아보는 것이 불가능하기 때문에

이를 보완해서 나온 언어가 어셈블리어입니다.

어셈블리어는 기계어와 1:1로 대응되며 CPU에 따라 기계어가 다르기 때문에

어셈블리어 또한 CPU에 따라 다르게 작성해야 합니다.

 

NASM x86 어셈블리어로 구현한 'Hello, World!'

adosseg
.model small
.stack 100h

.data
hello_message db 'Hello, World!',0dh,0ah,'$'

.code
main proc
      mov    ax, @data
      mov    ds, ax

      mov    ah, 9
      mov    dx, offset hello_message
      int    21h

      mov    ax, 4C00h
      int    21h
main endp
end main


어셈블리어 기초 지식

1. CPU

메모리에 있는 내용을 읽고, 쓰고, 연산(사칙연산, 비교)을 하고 데이터를 메모리와 레지스터로 보냅니다.

하나의 CPU는 12~14개의 레지스터를 가지고 있으며

레지스터에는 범용 레지스터, 상태 레지스터, 플래그 레지스터 등이 있습니다.

 

2. 레지스터

레지스터는 CPU의 연산에 필요한 데이터를 일시적으로 저장하는 기억장치입니다.
32bit, 64bit 레지스터들이 있으며 레지스터 하나의 저장공간을 의미합니다

 

3. RAM

프로그램을 작동시키기 위해 필요한 정보를 저장하는 하드웨어
반도체로 조립된 셀의 집합이며 각각의 셀들은 주소가 있습니다.
프로그램에서 메모리는 RAM을 말합니다.


어셈블러의 종류

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


참고문헌

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

위키백과 어셈블리어

인프런 - 유용한IT학습님의 어셈블리어 배우기에서 배운 내용을 포스팅할 예정

728x90
728x90