첫 어셈블리 프로그램
개발 환경을 설정하고 x86 어셈블리로 간단한 'Hello, World!' 프로그램을 작성하고 어셈블, 링크 및 실행합니다.
첫 어셈블리 프로그램은(는) CoddyKit의 무료 Assembly Language & x86 Low-Level Systems Programming 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Assembly Language & x86 Low-Level Systems Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Assembly Language & x86 Low-Level Systems Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Your First Assembly Program
Time to go hands-on: you will set up the tools, write a "Hello, World!" in assembly, and turn it into a runnable executable. This is the fun part.
Get Ready: Assembler & Linker
You need two tools: an assembler (we use NASM) to make an object file, and a linker (LD) to turn that into a runnable program.
Anatomy of an Assembly Program
An assembly program splits into sections. .data holds initialized data like strings; .text holds your instructions, starting at _start.
Storing "Hello, World!"
Store the message in .data. The db directive defines bytes; we add a newline (0xA) and compute the length right after.
section .data
msg db 'Hello, World!', 0xA
len equ $ - msgSystem Calls: Printing Text
To print, ask the OS via a system call. On Linux that is sys_write (number 1): you pass the output, the address, and the byte count.
section .text
global _start
_start:
; sys_write (syscall number 1)
mov rax, 1 ; syscall number for sys_write
mov rdi, 1 ; file descriptor 1 (stdout)
mov rsi, msg ; address of the string to write
mov rdx, len ; number of bytes to write
syscall ; execute the system callEnding Our Program (Syscall)
When done, the program must tell the OS to stop with a second syscall: sys_exit (number 60), passing an exit status — 0 means success.
; sys_exit (syscall number 60)
mov rax, 60 ; syscall number for sys_exit
mov rdi, 0 ; exit status 0 (success)
syscall ; execute the system callYour First Full Program!
Here is the full "Hello, World!" — save it as hello.asm. The .data section holds the message, .text prints it and exits.
section .data
msg db 'Hello, World!', 0xA
len equ $ - msg
section .text
global _start
_start:
; sys_write (syscall number 1)
mov rax, 1 ; syscall number for sys_write
mov rdi, 1 ; file descriptor 1 (stdout)
mov rsi, msg ; address of the string to write
mov rdx, len ; number of bytes to write
syscall ; execute the system call
; sys_exit (syscall number 60)
mov rax, 60 ; syscall number for sys_exit
mov rdi, 0 ; exit status 0 (success)
syscall ; execute the system callFrom Assembly to Object File
First, assemble: nasm -f elf64 turns hello.asm into the object file hello.o — machine code, but not yet an executable.
nasm -f elf64 hello.asm -o hello.oCreating the Executable
The object file isn't runnable yet. The linker (ld) wires up the _start entry point and produces the final executable.
ld hello.o -o helloExecute and See the Output!
Now run it with ./hello. "Hello, World!" prints to your console — congratulations, you just ran your first x86 assembly program!
./helloQuick Check: Process Steps
You've seen the full process to create an executable from assembly code. What is the correct order of steps?
Recap: Your First Assembly Program
You ran the full workflow: define data, call sys_write and sys_exit, then assemble, link, and execute. Next: registers and data types.
자주 묻는 질문
“첫 어셈블리 프로그램” 강의는 무료인가요?
네 — “첫 어셈블리 프로그램” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Assembly Language & x86 Low-Level Systems Programming 강의 전체를 잠금 해제할 수 있습니다. Assembly Language & x86 Low-Level Systems Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
“첫 어셈블리 프로그램”에서 뭘 배우나요?
개발 환경을 설정하고 x86 어셈블리로 간단한 'Hello, World!' 프로그램을 작성하고 어셈블, 링크 및 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 Assembly Language & x86 Low-Level Systems Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Assembly Language & x86 Low-Level Systems Programming을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Assembly Language & x86 Low-Level Systems Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“첫 어셈블리 프로그램” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Assembly Language & x86 Low-Level Systems Programming 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Assembly Language & x86 Low-Level Systems Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 어셈블리 언어란 무엇인가요?
- x86 아키텍처 기초
- 첫 어셈블리 프로그램
- 어셈블, 링크, 실행 도구 모음