어셈블리어란
이진수로 구성된 기계어는 사람이 봤을 때는 알아보는 것이 불가능하기 때문에
이를 보완해서 나온 언어가 어셈블리어입니다.
어셈블리어는 기계어와 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학습님의 어셈블리어 배우기에서 배운 내용을 포스팅할 예정
'어셈블리어' 카테고리의 다른 글
어셈블리어 [3] 명령어 (Feat. 플래그 레지스터) (0) | 2021.12.08 |
---|---|
어셈블리어 [2] 범용 레지스터 (0) | 2021.11.16 |