어셈블리어란 CPU와 직접 대화할 수 있는 언어
어셈블리어의 구성
- 명령어 (operation)
- 피연산자 (operand)
피연산자는 목적어, 명령어는 동사, 주어는 CPU이다.
mov eax,1
mov(operation code) eax,1(operand)
- 해석 : 이동해라 eax라는 공간에 1을
- mov는 명령어(operation code)
- eax,1은 피연산자(operand)이며, [,]로 구분을 통해 여러개를 넣을 수 있다.
- operand는 함수와 비슷한 형태라고 생각하면 된다, mov라는 함수에 (eax,1)을 전달한 형태이다.
- 여러 개일 경우 뒤에 있는 값을 앞에다 넣는 구조이다.
- eax는 레지스터를 뜻한다.
CPU의 구조

출처 : https://hongong.hanbit.co.kr/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-4%EA%B0%80%EC%A7%80-%ED%95%B5%EC%8B%AC-%EB%B6%80%ED%92%88cpu-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%B3%B4%EC%A1%B0%EA%B8%B0%EC%96%B5%EC%9E%A5/
레지스터(Register)
- 가장 속도가 빠른 저장 공간(읽기, 쓰기)
- 등록을 한다.
- 용량이 적어서 프로그램의 데이터를 담을 수 없다
- 프로그램의 내용은 RAM에 있음
- 데이터를 쓰거나 읽을 때는 RAM을 이용한다
- 직접적으로 + - 등의 연산을 할때는 레지스터를 이용한다.
- 즉, 종이에 써 있는 공식은 RAM, 머리 속으로 하는 계산은 Register이다.
- CPU내의 저장공간
- 값을 저장하고 있다.
- RAM과 다르다
registry vs register
- 레지스트리는 윈도우에서 설정 값을 보관하기 위한 것이다
IA-32의 사용 가능 레지스터

IA-32에서 사용할 수 있는 레지스터들은 EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI가 있다. 이 이름들은 Intel에서 정한 것이다.
32비트 이기 때문에 각각의 공간은 32bit(4byte)를 저장할 수 있다.