Menu
Coddy logo textTech

dq - 쿼드 워드 정의

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

dd는 4바이트의 데이터를 생성합니다. 하지만 때로는 훨씬 더 큰 숫자나 메모리 주소가 필요합니다. 이때는 dq를 사용합니다: 쿼드 워드 정의.

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

구문:

label dq value

예시:

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

비교 표:

지시어크기범위사용할 레지스터
db1 byte0에서 255까지al
dw2 bytes0에서 65,535까지ax
dd4 bytes0에서 4,294,967,295까지eax
dq8 bytesVery large (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를 Create합니다.

직접 해보기

%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를 십진수 문자열로 변환
    mov rsi, buffer
    add rsi, 63          ; 버퍼의 끝으로 이동
    mov byte [rsi], 0    ; 널 종료 문자
    
    mov rcx, 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실력 점검

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

기초의 모든 레슨

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