Menu
Coddy logo textTech

dq - 쿼드 워드 정의

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

dd는 4바이트의 데이터를 생성합니다. 하지만 때로는 더 큰 숫자나 메모리 주소가 필요할 때가 있습니다. 그럴 때는 dqDefine Quad Word를 사용합니다.

x86 어셈블리에서 quad word는 8바이트(64비트)입니다.

구문:

label dq value

예제:

section .data
    myNumber dq 10000000000     ; 8바이트, 값 100억
    bigNum   dq 123456789012    ; 매우 큰 숫자
    address  dq msg             ; "msg" 레이블의 메모리 주소

비교 표:

지시어크기범위사용할 레지스터
db1 바이트0 ~ 255al
dw2 바이트0 ~ 65,535ax
dd4 바이트0 ~ 4,294,967,295eax
dq8 바이트매우 큼 (2⁶⁴-1)rax

코드에서 쿼드 워드(quad word)를 사용하는 방법:

section .data
    myNumber dq 5000000000

section .text
    mov rax, [myNumber]    ; rax에 값을 로드합니다
    add rax, 1000000000    ; rax는 60억이 됩니다
    mov [myNumber], rax    ; 다시 저장합니다

특수 용도: 주소 저장

dq는 메모리 주소(포인터)를 저장하는 데에도 사용됩니다:

section .data
    message db 'Hello', 0
    pointer dq message      ; message의 주소를 저장합니다

중요한 규칙:

규칙설명
로드하거나 저장하려면 rax를 사용하세요rax는 64비트 레지스터입니다
challenge icon

챌린지

쉬움

.data 섹션에 값이 13800000000인 universe_age라는 이름의 quad word를 생성하세요.

직접 해보기

%include "data.asm"

section .data
    msg db 'universe_age = '
    msg_len equ $ - msg
    newline db 0xa

section .bss
    buffer resb 64

section .text
    global _start

_start:
    ; rax에 쿼드 워드 값을 로드합니다
    mov rax, [universe_age]
    
    ; rax를 10진수 문자열로 변환합니다
    mov rsi, buffer
    add rsi, 63          ; 버퍼의 끝으로 이동합니다
    mov byte [rsi], 0    ; 널 종료 문자
    
    mov rcx, 10          ; 10진수 변환을 위한 제수

convert_loop:
    xor rdx, rdx         ; 나눗셈을 위해 rdx를 비웁니다
    div rcx              ; rax를 10으로 나눕니다, rax = 몫, rdx = 나머지
    add dl, '0'          ; 나머지를 ASCII로 변환합니다
    dec rsi
    mov [rsi], dl        ; 숫자를 저장합니다
    cmp rax, 0
    jnz convert_loop

    ; 값이 덮어씌워지기 전에 숫자 포인터와 길이를 저장합니다
    mov r8, rsi          ; r8 = 첫 번째 숫자에 대한 포인터
    mov r9, buffer
    add r9, 63
    sub r9, rsi          ; r9 = 숫자의 개수
    
    ; 메시지 출력
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    
    ; 숫자 출력
    mov rax, 1
    mov rdi, 1
    mov rsi, r8
    mov rdx, r9
    syscall
    
    ; 줄바꿈 출력
    mov rax, 1
    mov rdi, 1
    mov rsi, newline
    mov rdx, 1
    syscall
    
    ; 종료
    mov rax, 60
    mov rdi, 0
    syscall
quiz icon실력 점검

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

기초의 모든 레슨