Menu
Coddy logo textTech

하나로 합치기

Coddy Assembly 여정의 기초 섹션에 포함된 레슨 — 45개 중 39번째.

여러분은 write 시스템 호출(syscall)의 네 가지 구성 요소를 모두 배웠습니다:

레지스터보관하는 내용화면 출력을 위한 값
rax시스템 호출 번호1 (write)
rdi파일 서술자1 (stdout)
rsi버퍼 주소문자열의 주소
rdx바이트 수문자열의 길이

이제 이 모든 것을 하나로 합칠 시간입니다.

전체 write syscall 패턴:

mov rax, 1          ; write를 위한 syscall 번호
mov rdi, 1          ; 파일 디스크립터 (stdout)
mov rsi, msg        ; 문자열의 주소
mov rdx, msgLen     ; 출력할 바이트 수
syscall             ; OS에 출력을 요청

완전하게 작동하는 프로그램:

section .data
    msg db 'Hello, World!', 0x0a
    msgLen equ $ - msg

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msgLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

이 프로그램의 기능:

단계수행 내용
1화면에 "Hello, World!"를 출력합니다
2새 줄로 이동합니다
3코드 0으로 정상 종료합니다

순서가 중요합니다:

syscall을 실행하기 에 레지스터를 설정해야 합니다. syscall 전에 네 가지가 모두 설정되어 있는 한 mov 명령어의 순서는 중요하지 않습니다.

challenge icon

챌린지

메시지 "Assembly is fun"을 출력하고 줄바꿈을 한 뒤, 깔끔하게 종료하는 전체 프로그램을 작성하세요.

문자열과 그 길이는 이미 정의되어 있습니다. _start: 내부에 코드만 작성하면 됩니다.

직접 해보기

section .data
    msg db 'Assembly is fun', 0x0a
    msgLen equ $ - msg

section .text
    global _start

_start:
    ; TODO: write 시스템 콜을 설정하고 호출합니다
    ; rax=1, rdi=1, rsi=msg, rdx=msgLen을 사용하세요

    ; TODO: 종료 코드 0으로 정상 종료합니다
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨