Menu
Coddy logo textTech

두 문자열 출력하기

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

문자열 하나를 출력하는 방법은 이미 알고 있습니다. 하지만 서로 별개의 문자열 두 개를 출력하려면 어떻게 해야 할까요? 예를 들어, "Hello "와 그다음에 "World!"를 출력하려면요?

각 문자열에 한 번씩, write 시스템 호출을 두 번 호출하면 됩니다.

작동 방식:

; 첫 번째 출력
mov rax, 1
mov rdi, 1
mov rsi, firstMsg
mov rdx, firstLen
syscall

; 두 번째 출력
mov rax, 1
mov rdi, 1
mov rsi, secondMsg
mov rdx, secondLen
syscall

예시:

section .data
    first db 'Hello ', 0x0a
    firstLen equ $-first

    second db 'World!', 0x0a
    secondLen equ $-second

section .text
    global _start

_start:
    mov rax, 1
    mov rdi, 1
    mov rsi, first
    mov rdx, firstLen
    syscall

    mov rax, 1
    mov rdi, 1
    mov rsi, second
    mov rdx, secondLen
    syscall

    mov rax, 60
    mov rdi, 0
    syscall

출력:

Hello World!

문자열 하나 대신 두 문자열을 출력하는 이유는 무엇인가요?

이유예시
재사용성다른 이름으로 같은 인사말 출력
유연성조건에 따라 다른 메시지 출력
구성메모리에서 다른 메시지를 분리하여 유지

원하는 만큼 문자열을 출력할 수 있습니다:

각 문자열마다 write syscall을 반복하기만 하면 됩니다.

challenge icon

챌린지

두 개의 문자열이 주어집니다. 값이 'Good'partOne과 값이 'bye'partTwo입니다. 두 문자열 모두 끝에 이미 줄바꿈이 있습니다.

출력에 다음과 같이 표시되도록 partOne을 출력한 다음 partTwo를 출력하는 코드를 작성하세요.

Good

bye

데이터 섹션과 종료 syscall은 이미 제공되어 있습니다. 두 개의 write syscall만 작성하면 됩니다.

직접 해보기

section .data
    partOne db 'Good', 0x0a
    partOneLen equ $-partOne
    partTwo db 'bye', 0x0a
    partTwoLen equ $-partTwo

section .text
    global _start

_start:
    ; TODO: write 시스템 콜을 사용하여 partOne 출력
    ; TODO: write 시스템 콜을 사용하여 partTwo 출력

    mov rax, 60
    mov rdi, 0
    syscall
quiz icon실력 점검

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

기초의 모든 레슨

직접 연습해 보세요: Assembly 플레이그라운드