Menu
Coddy logo textTech

db를 사용한 문자열

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

db가 단일 바이트를 정의한다는 것은 이미 알고 있습니다. 하지만 db는 문자열, 즉 연속된 여러 바이트도 정의할 수 있습니다.

구문:

label db 'text here'

예:

section .data
    message db 'Hello'

이렇게 하면 메모리에 5개의 바이트가 생성됩니다: 'H', 'e', 'l', 'l', 'o'

메모리에서 일어나는 일:

주소바이트ASCII 값
message'H'72
message+1'e'101
message+2'l'108
message+3'l'108
message+4'o'111

줄바꿈 추가:

문자열을 출력하고 다음 줄로 이동하려면 0x0a(줄바꿈 문자)를 추가합니다:

section .data
    message db 'Hello', 0x0a

이제 문자열에는 6개의 bytes가 있습니다: 'H','e','l','l','o', newline

여러 문자열:

section .data
    hello db 'Hello', 0x0a
    goodbye db 'Goodbye', 0x0a

이것이 중요한 이유:

문자열은 어셈블리에서 사용하게 될 가장 일반적인 데이터입니다. write syscall(5장에서 배우게 됩니다)은 지정한 길이에 도달할 때까지 메모리에서 bytes를 읽어 문자열을 출력합니다.

중요한 참고 사항:

string은 그저 bytes입니다. CPU는 'H'가 문자라는 것을 알지도, 신경 쓰지도 않습니다. 그것은 단지 숫자 72일 뿐입니다. write syscall은 출력할 때 이러한 숫자를 문자로 해석합니다.

challenge icon

챌린지

쉬움

.data 섹션에서 'Hi' 값이 들어 있고 줄바꿈(0x0a)이 뒤따르는 greeting이라는 문자열을 생성하세요.

직접 해보기

%include "data.asm"

section .text
    global _start

_start:
    ; write 시스템 콜을 사용하여 문자열 출력
    mov rax, 1
    mov rdi, 1
    mov rsi, greeting
    mov rdx, 3           ; 'H', 'i', 개행 = 3바이트
    syscall
    
    ; 종료
    mov rax, 60
    mov rdi, 0
    syscall
quiz icon실력 점검

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

기초의 모든 레슨

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