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바이트입니다: 'H','e','l','l','o', 줄바꿈

여러 개의 문자열:

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

이것이 중요한 이유:

문자열은 어셈블리에서 가장 흔하게 사용하게 될 데이터입니다. write 시스템 호출(5장에서 배우게 될 내용)은 지정한 길이에 도달할 때까지 메모리에서 바이트를 읽어 문자열을 출력합니다.

중요 참고 사항:

문자열은 단지 바이트일 뿐입니다. CPU는 'H'가 문자라는 사실을 알지도 못하고 신경 쓰지도 않습니다. 그것은 단지 숫자 72일 뿐입니다. write 시스템 호출은 출력할 때 이러한 숫자들을 문자로 해석합니다.

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실력 점검

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

기초의 모든 레슨